2014-06-29 47 views
5

我不能在3秒後發出ajax錯誤回調函數。我嘗試了超時,但它不會在指定時間後切換到錯誤回調!我無法獲得警報Got timeout超時不工作在ajax發佈請求

當我在這個網站提及類似的問題類似的問題,它沒有幫助。他們都使用ajax GET類型。我正在使用jQuery 1.10.1庫。

腳本:

$.ajax({ 
    type: 'POST', 
    timeout: 3000, 
    url : "http://mydomain/Services.asmx/Best_Scores", 
    dataType: "text", 
    async:false, 
    crossDomain:true, 
    data: "strJsonRequest="+scoredata, 
    success: function (data) { 
    // Success code ... 
    }, 
    error: function (data, textStatus, errorThrown) { 
    if(textStatus == "timeout") { 
     alert("Got timeout"); 
    } 
    } 
}); 

任何解決方案?

+0

RTT花費多少時間到達「http:// mydomain/Services.asmx/Best_Scores」?也許網址根本沒有超時? – Amberlamps

+0

@Amberlamps:謝謝你的回覆,我會花15-20秒! – byJeevan

+0

您是否嘗試在錯誤函數中警告某些不在if語句中的內容?也許'textStatus'不是「超時」? – Amberlamps

回答

13

修正:

變化async : falseasync: true

原因:

一種同步AJAX調用將阻塞,直到該請求已經完成。由於技術原因,實現超時是不可能的,因爲AJAX調用將不得不稍後執行。

如果稍後執行AJAX調用,該函數必須實現阻塞功能,以阻止代碼在AJAX調用後繼續運行,並在超時後再次執行 - 這是不可能的。