Я пытаюсь создать скрипт, который будет работать даже при сбое, пока не будет возвращено определенное слово. Нижняя функция будет работать около 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 );
});
});