我使用jQuery的$.ajax
方法從JSONP兼容的Web服務中獲取數據,並且只要獲得響應並在我的HTML中顯示接收到的數據,一切似乎都正常工作。但是,我一直無法讓ajax方法的成功回調觸發。什麼是更奇怪的是,即使我得到來自服務的有效響應,錯誤回調總是被解僱。jQuery ajax成功回調沒有射擊
下面是一個簡單的js函數的一個例子,我做測試此:
function doJsonp()
{
$.ajax({
url: "http://example.com/api/service?callback=blah",
dataType: "jsonp",
crossDomain: true,
success: function() { console.log("success"); }, // This is never fired
error: function() { console.log("error"); } // This is always fired
});
}
和匹配回調函數:
function blah(data)
{
console.log(data); // This is called properly
}
從這所以這裏閱讀類似的問題和其他地方,它似乎這通常是由返回未驗證的JSON服務引起的。對於我而言,我使用的是內部的Web服務,但也嘗試過其他JSONP服務,以及如來自Flickr提供的,例如:
http://api.flickr.com/services/feeds/[email protected]&lang=en-us&format=json&jsoncallback=blah
無論是JSON來自Flickr的服務和礦山驗證使用jsonlint,所以似乎並不是問題,據我所知。
在尋找這個問題的解決方案,我一直在使用一個jQuery插件,名爲jQuery的JSONP,在http://code.google.com/p/jquery-jsonp/發現嘗試。這取代了jQuery的$.ajax
電話與自己$.jsonp
所以上面的代碼如下所示:
function doJsonp()
{
$.jsonp({
url: "http://example.com/api/service?callback=blah",
success: function() { console.log("success"); },
error: function() { console.log("error"); }
});
}
然而,結果是相同的,並且成功回調永遠不會觸發。任何幫助或在正確的方向微調將不勝感激!
什麼是服務器響應? !「http://example.com/api/service?callback=blah」 =你的函數名的Bleh:您可以在develeopers工具,如蜻蜓(歌劇),螢火蟲(火狐),開發工具(鉻) – 2012-04-23 11:58:52
網址找到它()。可能是一個錯字? – mayrs 2012-04-23 12:03:46
@BartoszGrzybowski服務器響應狀態是200 OK – Limescale 2012-04-23 12:20:11