[英]in jquery how to call a function after an ajax request has been sent?
瀏覽器完全發送ajax請求后, myFunc1
在jquery
調用我的函數: myFunc1
?
我想在發送了jQuery ajax之后運行回調函數。 我不想complete
或success
執行此操作,因為我不想等待請求完成。 我想在瀏覽器發送了ajax請求后立即將其觸發。
這是我需要的用例:
我想在發出ajax請求后運行一個函數。 我的原始代碼是這樣的:
$.ajax({url: 'x.html'});
myFunc1();
在`myFunc1()更改瀏覽器位置的情況下,瀏覽器將取消待處理的ajax請求。
我當前的解決方案是這樣做:
$.ajax({url: 'x.html', complete: myFunc1});
這樣可以確保在ajax完成之前不調用myFunc1
。 盡管此解決方案有效,但效率不高,因為myFunc1
在請求完成myFunc1
不會運行。 由於我不在乎ajax請求返回什么,無論它失敗還是成功,所以我不需要等待它完成就可以運行myFunc1
函數。
如果您查看規格:
http://www.w3.org/TR/XMLHttpRequest/
您會看到2表示標題已經返回。
const unsigned short **HEADERS_RECEIVED** = 2;
這與jqXHR的成功基本相同。 您的瀏覽器可能不同=)
不嚴重..它們會有所不同,jQuery不能完全支持它們並選擇抽象它們的另一個原因:
http://msdn.microsoft.com/library/ie/ms534361.aspx
https://developer.mozilla.org/zh-CN/docs/Web/API/document.readyState
(找不到chrome的權威來源)
實際上聽起來像您希望函數在AJAX請求啟動時觸發。
$("#btn-ajax").ajaxStart(myFunc1);
function myFunc1() {
$("#message").html("I don't really care if the ajax call succeeds.");
}
這是我在執行AJAX調用后充分運行我的回調函數的目的,因此瀏覽器不會取消它,而不必等待服務器完成請求:
var cb = function(){
window.document.location.href="http://google.com";
}
$.ajax({
url: 'x.html',
complete: cb,
timeout: 100
});
這里的超時可確保如果我的服務器在100ms
內未響應,則執行callback
。 瀏覽器發送請求也需要100ms
時間。
我嘗試了狀態碼,最后最終沒有使用它們。 我發現它們無法跨瀏覽器運行,並且缺少JSONP請求。
如果您真的不在乎ajax調用是否成功,則可以嘗試使用settimeout方法,只是估算請求應花費的時間。 您還可以采用一種完成方法,以防實際完成之前超出您的估計。 這是一種破解,但可能對您有用。 例如,代碼如下所示:
$.ajax({url: 'x.html', complete: myFunc1});
setTimeout(myFunc1,100);
我認為您想使用beforeSend選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.