onreadystatechange

Discutii legate de AJAX, jQuery, MooTools, Prototype, Dojo, Yahoo! UI Library,script.aculo.us, ExtJS,AngularJS, Backbone.js, Ember.js, KnockoutJS

Moderator: Moderatori

Avatar utilizator
UnTip
Senior Member
Mesaje: 389
Membru din: Joi Mai 03, 2007 1:55 pm

onreadystatechange

Mesajde UnTip » Joi Mai 31, 2007 4:07 pm

am date.php
<?php
ob_start();


$i=0;
$max=10;
while($i<$max){

$i++;
sleep(1);

}
?>

onreadystatechange ar trebui sa imi apara intrun div in pagina unde apelez functioa care imi returneaza datele din date.php... in mod si timp real gen wait 1 , apoi dupa o secunda wait 2... etc insa ceea ce imi apare sunt la sfarsitul tranzactiei si parsarii tuturor rezultatelor adica. wait 1 wait 2 wait 3 .. etc , afisarea directa a tuturor datelor.. what;s wrong?



andrei009
Senior Member
Mesaje: 211
Membru din: Vin Mar 16, 2007 12:44 pm

Mesajde andrei009 » Joi Mai 31, 2007 4:54 pm

ce faci tu nu o sa iti mearga.
la ce vrei tu sa faci trebuie un request ajax la o secunda, dar totul se poate rezolva foarte simplu numai cu js

Cod: Selectaţi tot

i=1;

function asd(){
//afisezi
i++;
setTimeout(asd,1000)
}

Avatar utilizator
UnTip
Senior Member
Mesaje: 389
Membru din: Joi Mai 03, 2007 1:55 pm

Mesajde UnTip » Vin Iun 01, 2007 9:12 am

onreadystatechange ar trebui sa insemne.. ca la schimbarea starii obiectului apelat ar trebui sa mi se declanseze evenimentul... si normal as putea sa fac lucrul asta... in momentul in care se apeleaza datePage.php....

revin.... am datePage.php
$i=0;
$max=10;
while($i<$max){
echo "WAit...($i) <br />";
sleep(1);
$i++;
}


o parte din codul de pe pagina cu ajax request


....................................................
<script type="text/javascript">
function fetchData(url,dataToSend,objectID){
var pageRequest = false
if (window.XMLHttpRequest) pageRequest = new XMLHttpRequest();
else if (window.ActiveXObject) pageRequest = new
ActiveXObject("Microsoft.XMLHTTP");
else return false;

pageRequest.onreadystatechange = function() {


var object = document.getElementById(objectID);
object.innerHTML = pageRequest.responseText;

}
if (dataToSend) {
var sendData = 'sendData=' + dataToSend;
pageRequest.open('POST',url,true);
pageRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
pageRequest.send(sendData);
}
else {
pageRequest.open('GET',url,true);
pageRequest.send(null);
}}
</script>
</head>
<body>
<p>What Planet are you from?</p>
<div id="control" onclick="fetchData('dataPage.php',1,'message');"> Mercury </div>
...............................

what is wrong?

carco
Senior Member
Mesaje: 2799
Membru din: Joi Mai 27, 2004 4:36 pm
Localitate: Bucuresti
Contact:

Mesajde carco » Vin Iun 01, 2007 9:36 am

UnTip scrie:onreadystatechange ar trebui sa insemne.. ca la schimbarea starii obiectului apelat ar trebui sa mi se declanseze evenimentul...

Asta si face, doar ca starile sunt:
* 0 (uninitialized)
* 1 (loading)
* 2 (loaded)
* 3 (interactive)
* 4 (complete)
nu se schimba starea la fiecare bit transferat.


UnTip scrie: si normal as putea sa fac lucrul asta... in momentul in care se apeleaza datePage.php....

sau nu ai putea, responseText este disponibil cand request-ul s-a finalizat (lucru pe care l-ai observat si tu, iti apare tot textul dintr-o data), mai exact o sa ai responseText cand readyState == 4.

Foloseste un iframe ca sa faci ceea ce vrei.
Programator cu experienta in Magento/ZF, Typo3/Flow3, Symfony, B2B, CRM, ERP, SMB... vand betoniera

Avatar utilizator
UnTip
Senior Member
Mesaje: 389
Membru din: Joi Mai 03, 2007 1:55 pm

Mesajde UnTip » Lun Iun 11, 2007 3:52 pm

mai am o problema.. de fapt nu chiar problema insa am nevoie de o solutie.. poate niste idei ...

am un fisier in care fac un post...totul ok in postul respectiv imi este afisat un div.. ce are un link cu href=# iar pe el am evenimentul onclick, eveniment ce imi face o cerere prin GET , ajax la un fisier updateDB, faza e ca as dori ca , sa zicem xmlHttp.responseText sa imi intoarca doua rezultate ... pe care eu sa le pot insera ca valori ale unor inputuri....

deocamdata imi intoarce un singur rezultat in cazul in care statementul update respectiv a fost ok....as dori sa imi intoarca valori diferite in inputuri cu id-uri diferite, ca sa pot afisa valorile update-ate ale celor doua inputuri.... any ideeas?

carco
Senior Member
Mesaje: 2799
Membru din: Joi Mai 27, 2004 4:36 pm
Localitate: Bucuresti
Contact:

Mesajde carco » Lun Iun 11, 2007 5:08 pm

xmlHttp.responseText nu are cum sa fie "doua rezultate" insa il poti structura a.i. in JS sa-l poti sparge in "doua rezultate".
Ai putea trimite valorile encodate folosind JSON sau pur si simplu separate, de ex. valoare 1###valoare 2, si faci split in JS.

O alta varianta e sa trimiti ca raspuns un XML (ai grija sa setezi headeru' de XML si vezi ca in JS, o sa-l gasesti in responseXML) de ex:

Cod: Selectaţi tot

<response>
<element id="x" value="1" />
<element id="y" value="2" />
</response>
Programator cu experienta in Magento/ZF, Typo3/Flow3, Symfony, B2B, CRM, ERP, SMB... vand betoniera


Înapoi la “Librarii Javascript”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 7 vizitatori