我試圖做一個jQuery .ajax()
調用公共Web服務,我無法找到正確的語法。jQuery .ajax()調用失敗
我試過幾種不同的實現。這一個:
$.ajax({
url: 'http://www.geognos.com/api/en/countries/info/all.jsonp',
dataType: "jsonp",
success: function() {
alert('JSONP call succeeded!');
}
});
它失敗,出現以下錯誤:
all.jsonp:1 Uncaught ReferenceError: callback is not defined
這一個:
XMLHttpRequest cannot load http://www.geognos.com/api/en/countries/info/all.json. Origin http://localhost:8888 is not allowed by Access-Control-Allow-Origin.
我:
$.ajax({
url: 'http://www.geognos.com/api/en/countries/info/all.json',
dataType: "json",
success: function() {
alert('JSON call succeeded!');
}
});
與此錯誤失敗通過我的本地IIS7實例爲頁面提供服務。我也嘗試過$.getJSON()
的各種組合,結果相似。我錯過了什麼?
Here's a JSFiddle上述代碼。
更新:雖然認爲我們有一個解決方案,但在進行JSONP調用時仍然會出現callback is not defined
錯誤,即使警報/日誌代碼被調用。響應URL看起來是這樣的:
http://www.geognos.com/api/en/countries/info/all.jsonp?callback=undefined&157148585
和JSON響應被包裹這樣的:用在.ajax()
添加到URL的末尾回調名
callback({"StatusMsg": "OK", "Results": {"BD": {"Name": "Bangladesh", "Capital": {"DLST": "null", "TD": 6.0, "Flg": 2, "Name": "Dhaka", ...
我發現的例子配置,但是當我嘗試獲得相同的結果時,只會將其添加到查詢字符串的末尾。
請勿使用'alert()'進行調試。使用'console.log()'。 – 2011-12-29 20:32:58