Portál AbcLinuxu, 28. října 2025 10:28
window.onload=function() {
do_update();
}
function do_update() {
var status=document.getElementById('status');
var latest=document.adminForm.latest_version.value;
var db=document.adminForm.version_db.value;
var state=true;
while(db<=latest && state==true) {
alert(state);
var url='nejaka_url';
var params='latest_version='+latest+'&version_db='+db;
var ajax;
if(window.XMLHttpRequest) {
ajax=new XMLHttpRequest();
} else if(window.ActiveXObject) {
ajax=new ActiveXObject("Microsoft.XMLHTTP");
}
ajax.onreadystatechange=function() {
if(ajax.readyState==4 && ajax.status==200) {
var xml=ajax.responseXML;
var p=document.createElement('p');
p.appendChild(document.createTextNode(xml.getElementsByTagName('message')[0].firstChild.nodeValue));
status.appendChild(p);
if(xml.getElementsByTagName('status')[0].firstChild.nodeValue==1) {
state=false;
//exit;
}
db++;
}
}
ajax.open('POST',url,true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length", params.length);
ajax.setRequestHeader("Connection", "close");
ajax.send(params);
}
}
První souvisí se zvýrazněnou částí. Proč mi nefunguje toto nastavení proměnné state na false? A v místě, kde je kontrolní smyčka je pořád state=true? Nepomůže ani když zadám zakomentovaný příkaz exit. Stejně se smyčka provádí dál.
Druhý problém je, že smyčka se provádí asi 250x a jednotlivé skripty volané pomocí url a prováděné PHPkem trvají delší dobu a i přesto, že v tu dobu ten js nic nedělá , tak www prohlížeč úplně zablokuje. Jde nějak provádět ten js na pozadí, aby neblokoval prohlížeč, když se provádí ten php skript?
Předem děkuji za vaše rady.
ajax.onreadystatechange=function() { ... }. Nevím, ale proč se to děje. :O
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.