» »

Ajax readyState == 3 ne deluje?

Ajax readyState == 3 ne deluje?

Housy ::

Zdravo :)

Nikakor mi ne uspe usposobiti tale ajax readyState. Kar želim doseči je, da se uporabniku prikaže text "LOADING" medtem, ko se php skripta izvaja. ReadyState 4 recimo deluje pravilno, torej skrije posamezne elemente in prikaže končen response tam, kjer želim. Zalomi se samo pri readyState 3.

Probal sem v chrome, safari, firefox, ie, opera in vsepovsod je enak problem.

Trenutno imam narejeno takole:
ajaxRequest.onreadystatechange = function() {
				
	if(ajaxRequest.readyState == 3) {
	
		document.getElementById("audio").style.display = 'none';
		document.getElementById("video").style.display = 'none';
		document.getElementById("response").style.display = 'block';
		document.getElementById("response").innerHTML = 'Loading ...';
		
	}
				
	if(ajaxRequest.readyState == 4) {
				
		document.getElementById("audio").style.display = 'none';
		document.getElementById("video").style.display = 'none';
		document.getElementById("response").style.display = 'block';
		document.getElementById("response").innerHTML = ajaxRequest.responseText;
				
	}
			
}


Kaj delam narobe?

Hvala in lp,
Housy

Tody ::

Kaj pravi konzola?

Housy ::

Javi 2 napaki in sicer:
- Refused to set unsafe header "Content-length"
- Refused to set unsafe header "Connection"

Ampak kljub temu se php skripta vseeno izvede do konca. Sta ravno ti dve napaki krivi za nedelujoč readystate 3?

Hvala in lp,
Housy

Lion29 ::

huh... je kar painfully gledat kolk se nekdo muci se z vanilla JS ;)

sorry nimam konkretnega predloga kako resiti tvoj problem
Founder and CTO @ Article-Factory.ai

Housy ::

Ta dve headerja sploh ni potrebno nastaviti, saj jih brskalnik zaradi varnostnih razlogov nastavi kar sam - klik

Sem zdaj odstranil, ampak me zdaj nekaj WAMP heca ;((
Sej to se ti lahko zmeša x)
Bom naložil XAMPP in stestiram pa javim, če zadeva deluje ali ne.

Se da še kako drugače preverjati readyState?

Zgodovina sprememb…

  • spremenil: Housy ()

Housy ::

Žal še vedno ne deluje :(

Bi se moral tega lotiti morda na kakšen drug način?

Tnx, Housy

Lion29 ::

kaj sploh delas?
Founder and CTO @ Article-Factory.ai

Housy ::

Kako naj nardim, da se prikaže neka GIF loading animacija medtem, ko se php skripta izvaja?
Torej imam obrazec in ko uporabnik izpolni podatke ter pritisne na gumb "POŠLJI" želim, da se najprej prikaže loading.gif in success.gif na koncu.

Če nardim na spodnji način, ne deluje, zato sem mislil, da bi uporabil ajax in readyState 3, ki pomeni loading.
<?php

if(isset($_POST["submit"])) {

    // skrijem posamezne elemente
	// prikažem section, v katerem se nahaja slika loading.gif
	echo "<script type='text/javascript'>";
    echo "document.getElementById('audio').style.display = 'none';";
	echo "document.getElementById('video').style.display = 'none';";
	echo "document.getElementById('loading').style.display = 'block';";
	echo "</script>";
	
	... MOJA PHP KODA ...
	
	// skrijem loading section
	// prikažem section za uspešno izvedeno skripto
	echo "<script type='text/javascript'>";
    echo "document.getElementById('loading').style.display = 'none';";
	echo "document.getElementById('success').style.display = 'block';";
	echo "</script>";

}

?>

Lion29 ::

treoj tako.... v prvi fazi uporabi jQUERY in ne izumljaj tople vode....

v drugi fazi se te stvari izvajajo client side in ne server side...

torej ko sprozis nek zahtevek (ajax) z java scripto prikazes loading...

ko dobis od zahtevka nazaj status (success, error) skrijes loading element in zalaufas ustrezno rutino glede na status (in podatke), ki si jih prejel
Founder and CTO @ Article-Factory.ai

Housy ::

Hvala Lion29, dela zdaj :)

Sicer sem rešil brez uporabe jQuery-ja, če pa bo slučajno morda kdo rabil, lahko nardi na spodnji način.
...

ajaxRequest.open("POST", url, true);
ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxRequest.send(parameters);

document.getElementById("audio").style.display = 'none';
document.getElementById("video").style.display = 'none';
document.getElementById("response").style.display = 'block';
document.getElementById("response").innerHTML = 'LOADING!!!';
			
ajaxRequest.onreadystatechange = function() {
				
	if(ajaxRequest.readyState == 4) {

		document.getElementById("response").innerHTML = ajaxRequest.responseText;
				
	}
			
}


Tnx še enkrat :)

Lp, Housy

Zgodovina sprememb…

  • spremenil: Housy ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Slo-tech - kako blokirati nadležne uporabnike (strani: 1 2 )

Oddelek: Loža
9611703 (7950) jype
»

[ajax] osnove

Oddelek: Programiranje
61063 (907) Volk|
»

Show/hide rows tabelah (javascript)

Oddelek: Izdelava spletišč
51024 (1024) Tody
»

[Ajax in Java] v IE6 dela, v Firefoxu ne

Oddelek: Programiranje
241912 (1666) krho
»

[JavaScript] display=bolock/none

Oddelek: Izdelava spletišč
61041 (993) MasterBlaster

Več podobnih tem