我正在尝试创建一个脚本以便在失败时继续运行,直到返回某个单词。底部函数将运行大约30秒,由于PHP脚本(这是我想要的)停止,然后jquery将触发它一次又一次地运行(直到返回某个触发器)。 top函数get_data();在完成请求后,它将每隔一秒半运行一次(它基本上会发现另一个请求处于什么阶段。
我的问题是保持整洁,当再次激活请求时,它再次启动get_data()
功能,除非发生错误,否则不需要它。为了解决这个问题,我只想终止所有ajax请求并重新启动(获取数据函数只运行一个小的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 );
});
});
答案 0 :(得分:1)
在这里查看AJAX Manager插件:
http://plugins.jquery.com/project/AjaxManager
在这里:
http://www.protofunc.com/scripts/jquery/ajaxManager/
它允许您缓存请求,防止对同一URL的双重请求以及中止请求以及其他功能。
答案 1 :(得分:1)