我想创建一个脚本,即使在失败时仍然运行,直到返回某个单词。底部函数将运行约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