Я пишу этот скрипт, чтобы он отображал состояние скрипта импорта. Он должен вызывать функцию, которая запускает http-запрос каждые X секунд.
function progres_import() {
//if(import_status != 'finalizat') {
alert("progres_import");
setTimeout(function() { return update_progres_import(); }, 2000);
setTimeout(function() { return update_progres_import(); }, 4000);
setTimeout(function() { return update_progres_import(); }, 6000);
setTimeout(function() { return update_progres_import(); }, 8000);
//setTimeout(function() { progres_import(); }, 400);
//}
//else {
//}
}
это то, что я использовал для проверки работоспособности. Я тоже добавил комментарии, чтобы показать, что я собираюсь с ними сделать. Я перепробовал все возможные вызовы setTimeout, с кавычками, без кавычек, с анонимной функцией и без нее.
var xmlhttp_import_progres;
function update_progres_import() {
xmlhttp_import_progres=GetXMLHttpObject();
if (xmlhttp_import_progres==null) {
alert ("Browser does not support HTTP Request (xmlhttp_import_progres)");
return;
}
var url="crm/ferestre/import_progres.php";
url=url+"?sid="+Math.random();
xmlhttp_import_progres.onreadystatechange=function() {
if (xmlhttp_import_progres.readyState == 4) {
progres_resp = xmlhttp_import_progres.responseText;
progres = progres_resp.split('_');
import_nrc = progres[0];
import_nrt = progres[1];
import_status = progres[2];
mesaj = 'Progres import: ' + import_nrc + ' / ' + import_nrt;
//document.getElementById("corp_import_mesaj").innerHTML = mesaj;
alert(progres_resp);
}
};
xmlhttp_import_progres.open("POST",url,true);
xmlhttp_import_progres.send(null);
}
это бизнес-конец функции progres_import.
что происходит, если я получаю предупреждение ("progress_import") в первой функции прямо при запуске процесса импорта, но предупреждение (progres_resp) во второй начинает появляться только после завершения процесса импорта (он все еще поддерживает 2-секундный интервал, так что в этом смысле setTimeouts работал).
скрипт php в запросе ajax просто берет некоторые переменные сеанса, которые устанавливает скрипт импорта, и печатает их для использования в JavaScript (x импорт из y всего, z не удалось, и так далее)
Есть идеи, почему он так себя ведет?