您需要使用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可以。
API是否端點支持JSONP? –
@Jason,我不確定。我是Angular的新人。如果需要,我該怎麼辦?或者你可以發佈一個例子? – Syed
它看起來像它,添加一個'&回調= {一些地方的功能名稱,如渲染}'到URL的末尾,然後你可以使用跨域此服務。我沒有時間寫完整的答案,但我確定有人已經輸入一個:) –