2013-05-01 45 views
0

我用$.ajax()方法從JQuery做一些POST請求,其error: function(jqXHR, textStatus, errorThrown) { ... }回調裏面,我想實現與超時,例如一個簡單的重試機制我如何引用匿名函數裏面的AJAX請求對象

timeout = window.setTimeout(function() { 
    $.ajax(myReqOptions); 
}, 3000); 

myReqOptions這裏需要將選項對象我在$.ajax()定義,使這項工作。有沒有調用超時,這樣之前引用不是設置一個臨時變量等這個對象的快捷方法:

myReqOptions = this; 
timeout = window.setTimeout(function() { 
    $.ajax(myReqOptions); 
}, 3000); 

this這裏指的是error回調,這是我在$.ajax()定義對象的所有者。

+0

「*的對象,我定義在'$ .ajax' *「中 - 我沒有看到任何對象(文字?)定義,您只使用那個'myReq'變量?您也可以從錯誤回調中引用該變量。 – Bergi 2013-05-01 18:56:02

+0

您可以使用$ .proxy或Function.bind,但使用該臨時變量更簡單。 – 2013-05-01 18:57:39

+0

@Bergi在這種情況下'this'是傳遞給原來的'$ .ajax'的選項對象,我們在錯誤處理程序中。 – 2013-05-01 18:58:09

回答

1

臨時變量很好。爲了縮短呼叫的littlebit,您可以使用:

timeout = window.setTimeout($.ajax.bind($, this), 3000); 

,或者用舊的瀏覽器(不使用ES5墊片)的兼容性,與$.proxy

timeout = window.setTimeout($, "ajax", this), 3000); 
相關問題