我想創建一個腳本,即使在失敗時仍然運行,直到返回某個單詞。底部函數將運行約30秒,由於PHP腳本(這是我想要的)停止,然後jquery將觸發它一次又一次運行(直到返回某個觸發器)。頂層函數get_data();將在其本身完成請求後每秒運行一次(它基本上找出在另一個請求處於什麼階段)。如何殺死阿賈克斯請求
我的問題是保持事情整潔,當請求再次激活時,它會啓動get_data()
函數再次這是不需要的,除非在這種情況下發生錯誤,爲了克服這個問題,我只想終止所有的ajax請求並重新開始(get data函數只運行一個小的php腳本,半秒鐘處理,另一個大約10秒鐘,這樣做不會造成太大的傷害),但我似乎無法得到它終止ajax請求,我只是繼續有多個get_data()
請求在各個方向開火.. 。
$(document).ready(function() {
var number = 0;
var requests = [];
function kill_requests(requests){
$.each(requests, function(i, v){
v.abort();
})
}
function get_data(url, requests){
$('#requests').html(number);
requests.push($.ajax({
type: 'POST', url: './scrape/ajaxGetData.php', data: 'url=' + encodeURIComponent(url), cache: false, timeout: 10000,
error : function(){ },
success: function(html){
if(html.substr(0,12) == '<!-- die -->') {
kill_requests(requests);
$("#result").html('<p>Complete...</p>' + html);
}else{
$("#result").html(html);
window.setTimeout(function(){ number++; get_data(url, requests) }, 2000);
}
}
}));
}
$("input[name=submit]").live("click", function(){
var url = $("input[name=url]").val();
requests.push($.ajax({
type: 'POST', url: './index.php', data: 'submit=true&url=' + encodeURIComponent(url), cache: false,
error : function(){
kill_requests(requests);
$("input[name=submit]").trigger('click');
},
success: function(html){
$("#result2").html(html);
if(html.substr(0,12) != '<!-- die -->') {
kill_requests(requests);
$("input[name=submit]").trigger('click');
}
}
}));
get_data(url, requests);
});
});
如果你使用普通的舊XHR當你開始使用XHR對象將中止當前的(如果有的話)的同一個實例的新請求。 – NullUserException 2011-03-03 06:47:35
感謝您的輸入。任何想法如何與上面的jquery做到這一點? – 2011-03-03 06:52:02
對,看來中止不是我的問題。我用'get_data(url,requests)'設置了大量的路徑/方向/線程;'所以我只是在運行一次後,不要在觸發事件時再次運行它。 – 2011-03-03 10:21:57