Error al consumir web service con POST y GET en Angularjs

Hola tengo un problema que no me deja seguir adelante. Tengo un Web Service en la cual pide ingresar coordenadas (INPUT); estas, si son correctas, mandará en formato JSON un listado del nombre de las sucursales cercas (OUTPUT).

Se puede ver aquí:

http://saltala.cl/igniter/WSExamples/GetSucursales

El tema es que no he podido lograr enviar los parámetros para obtener esta informacion (lat, long) desde FrontEnd.

Datos:

  • Input:

    lat (float): latitud del GPS

    long (float): longitud del GPS

  • Output:

    Lista de empresas y sucursales con los siguientes parámetros: id_sucursal, direccion, nombre_empresa, distancia.

    Acceso: http://saltala.cl/igniter/Appmovil/GetSucursales

Código: Entiendo esto, se que esta mal y me gustaría si me pueden ayudar a corregir y completarlo por favor, e visto demasiados videos, he podido lograr conexion con un get, sin enviar parámetros, como en los cursos, pero de esto nada.

function comotellames($scope, $http) {
    $http({
        url: 'http://saltala.cl/igniter/Appmovil/GetSucursales',
        method: "POST",
        data:
            latitud=  ???
            longitud= ??
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    })
    .success(function (data, status, headers, config) {

        console.log(data)

        id_sucursal, direccion, nombre_empresa, distancia. ??

    }).error(function (data, status, headers, config) {
        console.log(error),
        $scope.status = status; 
    });

2
задан 01.09.2016, 14:59
2 ответа

Видя страницу, которую ты снабжаешь ссылками, мне кажется, что ошибка находится в, как ты используешь обещания. Ты используешь success и error что являются устаревшими методами. В Вашем месте напиши then и catch, также у тебя есть какие-то ошибки sintáxis.

Ты должен использовать ng-model в input и после использовать $scope с Вашим корреспондентом binding, чтобы получать стоимость

<input class="form-control" ng-model="lat">

он получается используя

$scope.lat

Это быть должный оставаться так

angular.module('app', [])
  .controller('CoordenadasCtrl', function($scope, $http) {
    $scope.enviar = function() {
      $http({
          url: 'http://saltala.cl/igniter/Appmovil/GetSucursales',
          method: "POST",
          data: {
            lat: $scope.lat,
            lng: $scope.lng
          },
          headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
          }
        })
        .then(function(response) {
          console.log('success');
          console.log(response.data)
        }).catch(function(error) {
          console.log('error');
          console.log(error);
        });
    };
  });
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="CoordenadasCtrl" class="form-horizontal">
  <div class="form-group">
    <label class="col-md-3 control-label">Latitud</label>
    <div class="col-md-9">
      <input class="form-control" ng-model="lat">
    </div>
  </div>
  <div class="form-group">
    <label class="col-md-3 control-label">Longitud</label>
    <div class="col-md-9">
      <input class="form-control" ng-model="lng">
    </div>
  </div>

  <button type="button" ng-click="enviar()" class="btn btn-primary">Enviar</button>
</div>

Заметь: snippet не функционирует, потому что он дает отказывающийся доступ. Код должен функционировать хорошо на твоем сервере, так как этот не делает CORS.

1
ответ дан 24.11.2019, 13:31
  • 1
    Много gacias уважаемый, он я был большой помощи, довел до сведения мне grades сомнения как succes, с другой стороны я это выполнил и послав неудар в лунку с координатами, меня возвращает Object {success: " false"} вместо данных в формате JSON, примере: {" success": " true" " data": [{" id_sucursal": " 19" " direccion": " Av. Раковина И Бык 3459, Пуэнте Alto" " nombre_empresa": " Больница S\u00f3tero" " distancia": " 16.387569" " activo": " 1"}]} и я вновь благодарю его, что у него был хорошо d и # 237; в. – Hernan Humaña 01.09.2016, 17:41
  • 2
    Edit и # 233; пример для того, чтобы ты смог определять, который две v и # 237; туз происходит. Помни, что Веб service podr и # 237; чтобы возвращаться правильные данные, но даже схвати и # 237; неотрицательное приращение и # 225; ndote, что есть ошибка. C и # 243; я говорю, что http для ошибок это 400-500(catch) и 200, он удовлетворительный (then). Которые ты считал последованными, он значит, что petici и # 243; n est и # 225; функционируя как он ожидается. Не забывай проголосовать за вопрос, если он тебе был полезен. – devconcept 01.09.2016, 17:49
  • 3
    @HernanHuma и # 241; в Свойство status он говорит тебе, который c и # 243; я говорю результата petici и # 243; n. Если он говорит 200 OK и говорит, что {success: false} имеет общее с твоим server. Я обратил внимание, что которое env и # 237; в нее p и # 225; gina примера это lat и lng и ты посылаешь latitude и longitude. Это не то, что ждет сервер и может быть причина ошибки. Correg и # 237; мой пример. – devconcept 01.09.2016, 18:11
  • 4
    @HernanHuma и # 241; в Considera помечать ответ как принятая, если ты функция и # 243;. – devconcept 05.09.2016, 16:10

Поле data должен будь быть объектом. У него нет правильного sintáxis, это должен бы быть немного comó:

data:
   {
     longitud:'xxx',
     Latitud:'xxxx'
   }

И уже оно было бы должно функционировать, кроме того линия, что эта после console, кажется, не имеет смысл.

Привет.

0
ответ дан 24.11.2019, 13:31