Portál AbcLinuxu, 12. května 2025 06:03

Dotaz: problém s js skriptem

27.2.2009 22:43 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
problém s js skriptem
Přečteno: 127×
Odpovědět | Admin
Mám 2 problémy s tímto js:
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.

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

kozzi avatar 27.2.2009 22:51 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: problém s js skriptem
Odpovědět | | Sbalit | Link | Blokovat | Admin
no ja bych rekl ze to bude tim ze se proste nikdy nedostane do tela te podminky.
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
27.2.2009 22:53 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: problém s js skriptem
Do toho těla se dostane, to mám vyzkoušené pomocí alertu.
kozzi avatar 27.2.2009 23:02 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: problém s js skriptem
a pokud to das az za tu podminku proste to tel opodminky bude prazdne a nastaveni to promene se stane nezavisle an ni tak se to nastavi na false?
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
27.2.2009 23:12 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: problém s js skriptem
Už vím proč se to nenastavuje. Když zapnu ten while, tak se přestane provádět část ajax.onreadystatechange=function() { ... }. Nevím, ale proč se to děje. :O
kozzi avatar 27.2.2009 23:25 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: problém s js skriptem
no já js vubec neznam popravde tomu kodu nerozumim, ale jestli tomu dobre rozumim, tak ten kod ma znamenat ze ajax.onreadystatechange je pridelena funkce, takze vzdy kdyz nastane urcity jev tak se ma zavolat ta dana funkce? Pokud ano tak je blbost aby to bylo v cyklu, to bys potom to prirazovani delal nekolikrat
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.