2014-01-16 66 views
2

我得到了一個樣本API在線訪問寧靜的API。我想爲我的Angular示例應用程序使用它。但是,我無法訪問下面的restful API。請看看我的代碼。不能採用了棱角分明的js

function Hello($scope, $http) { 
    $http({method: 'GET', url: 'http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo'}). 
    success(function(data) { 
     alert("Success");   
    }). 
    error(function(data){ 
     alert("Error"); 
    }); 

} 

Thank you 
Nizam 
+0

API是否端點支持JSONP? –

+0

@Jason,我不確定。我是Angular的新人。如果需要,我該怎麼辦?或者你可以發佈一個例子? – Syed

+0

它看起來像它,添加一個'&回調= {一些地方的功能名稱,如渲染}'到URL的末尾,然後你可以使用跨域此服務。我沒有時間寫完整的答案,但我確定有人已經輸入一個:) –

回答

2

您需要使用JSONP才能通過跨域的Ajax請求數據。好消息是你可以將這段代碼:

function Hello($scope, $http) { 

    $http.get('http://api.worldweatheronline.com/free/v1/weather.ashx?q=London&format=json&num_of_days=5&key=atf6ya6bbz3v5u5q8um82pev'). 
    success(function(data) { 
     alert("success"); 
     $scope.greeting = data["content"]; 
     console.log(data["content"]); 
    }). 
    error(function(data){ 
     alert("Error"); 
    }); 

} 

有了這個代碼(demo):

function Hello($scope, $http) { 
    $http 
     .jsonp('http://api.worldweatheronline.com/free/v1/weather.ashx?q=London&format=json&num_of_days=5&key=atf6ya6bbz3v5u5q8um82pev&callback=JSON_CALLBACK') 
     .success(function(data) { 
     alert("success"); 
     $scope.greeting = data["content"]; 
     console.log(data["content"]); 
     }) 
     .error(function(data){ 
     alert("Error"); 
     }); 
} 

這裏是什麼了,該$http.jsonp()方法需要串'callback=JSON_CALLBACK'在某處出現URL。它將用.success()將引用的生成的函數名稱替換它。這不會神奇地與不支持JSONP的服務器協同工作,但在這種情況下,服務器URL可以。

+0

還是同樣的錯誤。「錯誤」 – Syed

+0

我從更新的變化/代碼你仍然有錯誤?也許你可以創建一個JSFiddle代碼,我可以更新它 –

+0

好的。我會去做。 – Syed