2013-04-18 4 views
1



Я пытаюсь вызвать внешнюю службу REST из углового с помощью службы $ http.
Дело в том, что я застрял в методе $ http.get, потому что каждый раз, когда я вызываю
, сервис остальной службы я получаю сообщение об ошибке со статусом = 0 и никакой информации в параметре данных
обратного вызова ошибки.

До сих пор я пытался вызвать локальную службу runnig на порту 5000: $http.get('http://localhost: 5000/ping '), и предполагается, что он должен вернуть объект json со свойством и значением. Другой подход заключался в том, чтобы позвонить http://api.flickr.com/services/rest/?method=flickr.test.echo&name=test в надежде получить ответ. Для них обоих я получаю ту же ошибку: я упоминал ранее.

Звонок сделан из углового контроллера, который ввел услугу http.

Спасибо.Как вызвать службу внешнего отдыха от angularjs?

+0

В вашем URL-адресе не должно быть пробелов. – jpmorin

+2

Чтобы обрабатывать ответ и $ http request: $ http.get (url, {}), затем (function (result) {console.log ('success', result.data);}, function (result) {console .log ('error');}); – jpmorin

+1

Покажите нам код. Как вы знаете, что вы получаете сообщение об ошибке со статусом = 0 и никакой информации в параметре данных обратного вызова ошибки. Даже если это не удается: http://api.flickr.com/services/rest/?method=flickr.test.echo&name=test, поскольку я не предоставил ключ API, статус на моей машине равен 200. – basarat

ответ

2

Вы пробовали:

$http({method: 'GET', url: 'someURL'}). 
      success(function(data, status, headers, config) { 
       //set view model or do something. 

      }). 
      error(function(data, status, headers, config) { 

      }); 
0

Убедитесь, что вы прошли параметры правильно, если Есть какой-либо.
Общий синтаксис должен быть как следующее:

$http.get('../link/yourApplication/searchBySomeNumber?someNum='+$scope.someNum+'&asOfDate='+asOfDate+'&status=undefined') 
      .success(function(data, status, headers, config) { 
       //your code 
       console.log('Data return successful'); 
      }) 
      .error(function(data, status, headers, config) { 
       $scope.status = status; 
       alert('Info Error'); 
       console.log('Group Info Error'); 
      }); 
0

Как $ HTTP возвращает Promise, вы можете использовать метод .then() войти свои результаты, когда обещание не будет решена, или регистрирует ошибку в случае, если что-то пойдет не так :

$http.get('http://localhost:5000/ping') 
    .then(function(returnedJson) { 
     console.log(returnedJson.data); 
    }) 
    .catch(console.error) // or $log.error if you are using $log from Angular 

Пожалуйста, обратите внимание, что чистый ответ JSON получается протоколирование .data свойства returnedJson объекта. Поскольку это обещание, оно содержит другую информацию, которая не имеет отношения к потреблению веб-службы.

Также обратите внимание, что веб-служба, которую вы хотите использовать, также должна быть в том же домене, что и ваше приложение с угловым выражением, иначе вы можете столкнуться с ошибкой Cross Domain, если только эта служба не разрешает использование с внешних веб-сайтов, подвергая Cross Domain Policy ,

(Более подробная информация представлена ​​здесь: Can someone post a well formed crossdomain.xml sample?)

Если это так, то этот пост должен быть полезным:

jQuery AJAX cross domain

Надеется, что это помогает.

Смежные вопросы