有沒有什麼方法可以計算jQuery ajax請求持續了多久?有時候搜索會花費太長時間,如果搜索接管了5秒,那麼添加一個jquery abort()按鈕會很好。任何方式,我可以做到這一點!時間ajax請求
在ajax請求的另一端是一個php文件,它發出postgresql請求。
非常感謝您的任何想法!
有沒有什麼方法可以計算jQuery ajax請求持續了多久?有時候搜索會花費太長時間,如果搜索接管了5秒,那麼添加一個jquery abort()按鈕會很好。任何方式,我可以做到這一點!時間ajax請求
在ajax請求的另一端是一個php文件,它發出postgresql請求。
非常感謝您的任何想法!
要讓中止按鈕出現5秒鐘後,您的來電send
後添加setTimeout
功能。一旦AJAX命令完成,您可以添加代碼來清除超時並刪除中止按鈕(如果存在)。
var timeOutID = 0;
$.ajax({
url: 'ajax/test.html',
success: function(data) {
clearTimeOut(timeOutID);
// Remove the abort button if it exists.
}
});
timeOutID = setTimeout(function() {
// Add the abort button here.
}, 5000);
這樣,如果AJAX返回足夠快的中止按鈕將不會出現。
謝謝!這聽起來像一個好主意。我有點不清楚在$ .ajax的方案中實現這個超時的情況({type:「POST」, url:「search.php」,...我把那個放在哪裏? – 1252748 2012-04-11 19:47:48
@ user1252748 Updated以更好的示例文本。 – 2012-04-11 19:56:36
看看超時選項(http://api.jquery.com/jQuery.ajax/)。您可以在特定的呼叫中設置它,或者使用$ .ajaxSetup()全局設置它。
不是說jquery/ajax timeout指的是某種錯誤?就像,它會在發生這種情況之後停止處理ajax,而不是讓用戶選擇取消呼叫。還是我誤會了?謝謝。 – 1252748 2012-04-11 19:49:34
是的,我的理解是,該選項在指定的時間後無條件地取消操作。而當我重讀你的問題時,這不完全是你想要做的。 setTimeout()可能是更好的方法。 – 2012-04-11 20:10:07
通常情況下,我會設置一個超時,一旦請求被髮送,將在10秒左右後觸發,然後回退到別的東西,以確保它仍然發生(例如,表單提交)。
所以變量設置爲false,var failed = false;
做請求 在該請求啓動的同時,設置超時:
setTimeout(function() {
failed = true;
$("#form").submit();
return false;
}, 10000);
在AJAX調用的返回功能,請檢查失敗的變量已被設置爲true,如果有的話,實際上不要做它最初嘗試的任何事情,否則它可能會弄亂某些東西,或者在發生其他事情時混淆用戶(因爲這些事情通常發生在較慢的Internet上連接,如果在加載新頁面時下一步出現,他們可能嘗試進行交互,然後頁面將改變)。
$.post("ajaxcall.php", {'etc': "etc"},
function(returned) {
if (failed != true) {
//do whatever with returned variable
}
});
var timer = 0,
XHR = $.ajax({
url: 'ajax/mypage.html',
beforeSend: function() {
timer=setTimeout(showAbort, 5000);
}
});
function showAbort() {
$('<input type="button" value="Abort" id="abort_button"/>').appendTo('#some_parent');
$('#abort_button').on('click', function() {
XHR.abort(); //abort the Ajax call
});
}
XHR.always(function() { //fires on both fail and done
clearTimeout(timer);
if ($('#abort_button').length) {
$('#abort_button').remove(); //remove button if exists
}
});
你可以下載firebug for firefox或chrome ... – Dutchie432 2012-04-11 18:36:43