Portál AbcLinuxu, 12. května 2025 06:03
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.