2011-02-15 69 views
2

我使用jQuery的ajax方法來向我的服務器發出jsonp請求(我不時發出請求)。這通常工作得很好,服務器返回一個響應,我的「成功」回調函數被觸發。jQuery的jsonp回調不會在一段時間後觸發

問題是,一段時間後,即使我收到來自服務器的成功響應,成功函數也會停止被調用。當發生這種情況時,每個連續的jsonp請求也會「失敗」(甚至從代碼中的其他地方和\或服務器上的其他路徑)。

事情我已經檢查:

  1. 來自服務器的響應是有效的(像其他成功響應)。

  2. jQuery創建的jsonpXXX回調函數確實是全局定義的。

  3. 當我在同一頁面上打開多個瀏覽器時,它並不會在所有瀏覽器中發生。

我的客戶端代碼:

$.ajax({ 
    type: "GET", 
    url: SOME_URL, 
    dataType: "jsonp", 
    data: {...}, 
    success: function(data) { 
     alert("This function is not always being called :("); 
    } 
}); 

任何意見\幫助將不勝感激:)

回答

4

您可能會收到來自服務器的成功響應,但也有可能會出現一些問題與返回的JSONP文本。如果在解析響應時出現任何錯誤,則調用回調函數將失敗。

另外,我建議使用這個簡化JSONP請求的alternative solution to jQuery's implementation of JSONP

+0

我沒有看到JSONP文本的任何問題。但我轉移到jquery-jsonp,現在看起來工作正常。謝謝 :) – Ofirov 2011-02-22 10:12:34