2013-04-18 47 views
1



我想從使用$ http服務的角度調用外部REST服務。
事情是我卡在$ http.get方法,因爲每次我呼叫
其餘的服務時,我得到一個錯誤狀態= 0,錯誤回調的數據參數
沒有信息。

到目前爲止,我已經嘗試調用端口5000上的本地服務runnig:$http.get('http://localhost:5000/ping'),這應該返回一個帶有屬性和值的json對象。另一種方法是呼籲http://api.flickr.com/services/rest/?method=flickr.test.echo&name=test希望得到答案。對於他們兩人我都會得到同樣的錯誤:我之前提到過。

該調用是從已經注入http服務的角度控制器進行的。

謝謝。如何從angularjs調用外部休息服務?

+0

在你的網址中不應該有空格。 – jpmorin 2013-04-18 05:28:13

+2

處理來自$ http請求的響應:$ http.get(url,{})。然後(function(result){console.log('success',result.data);},function(result){console .log('error');}); – jpmorin 2013-04-18 05:30:01

+1

向我們展示代碼。你怎麼知道你得到一個錯誤,狀態= 0,錯誤回調的數據參數 中沒有信息。即使這樣做不成功:http://api.flickr.com/services/rest/?method=flickr.test.echo&name=test因爲我沒有提供API密鑰,所以我的機器上的狀態爲200 OK。 – basarat 2013-04-18 07:09:24

回答

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返回一個承諾,你可以使用.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響應程序通過記錄returnedJson對象的.data財產獲得。由於它是一個Promise,它包含與使用Web服務無關的其他信息。

另請注意,您希望使用的網絡服務應與Angular應用程序位於同一個域中,否則可能會導致出現跨域錯誤,除非該服務允許通過公開跨域策略來使用外部網站。

(在這裏找到更多的信息:Can someone post a well formed crossdomain.xml sample?

如果是這樣的話,這個帖子應該是有幫助的:

jQuery AJAX cross domain

希望這有助於。

相關問題