ugrás a tartalomhoz

AJAX -ban több adat (változó) visszaküldése a javascriptnek

hdf · 2007. Jan. 14. (V), 10.30
Helló!

Azt szeretném megkérdezni, (mert gugliban nem találtam ilyesmit) hogy hogyan tudok több adatot (változót) visszaküldeni PHP -ből az ajax progimnak?
Jelenleg kb így néz ki a dolog:
  1. xmlHttp.open("POST""ajax.php"true);  
  2. xmlHttp.setRequestHeader('Content-Type''application/x-www-form-urlencoded');  
  3. xmlHttp.send("id=" + me.parentNode.id + "&data=" + me.value);  
És így kapom meg a választ:
  1. xmlHttp.onreadystatechange = function() {  
  2.   if(xmlHttp.readyState == 4) me.parentNode.innerHTML = xmlHttp.responseText;  
  3. }  
Idáig minden szép és jó, csak az a baj, hogy majd 2 adat kéne hogy visszajöjjön az ajax.php -től, az egyik az adat, az jelenleg is jön és minden csodásan müxik, de kéne, hogy egy színkódot is visszaküldjön és utánna valahogy így kéne kinéznie:
  1. xmlHttp.onreadystatechange = function() {  
  2.   if(xmlHttp.readyState == 4) {  
  3.     me.parentNode.innerHTML = xmlHttp.responseText["data"];  
  4.     me.parentNode.bgcolor = xmlHttp.responseText["color"];  
  5.   }  
  6. }  
De gondolom ez így nem megy, úgyhogy hogyan lehet?

Előre is köszi a segítséget.
 
1

tömb, serialize

csla · 2007. Jan. 14. (V), 10.46
Szia!

Tedd egy tömbbe a választ, és küldd vissza a tömböt sztringé alakítva, amit aztán kliens oldalon JS-ben visszalakíthatsz tömbbé.
2

responseXML, json szavakra keress rá

pp · 2007. Jan. 14. (V), 10.52
De akár használhatsz xhtml-t és végigmehetsz rajta a DOM kezelő függvényekkel.
Vagy keresel egy olyan karaktert, ami sem a data-ban sem a color-ban nem fordul elő (mondjuk ";") és a visszakapott adatot szépen szétvágod.

pp
3

Köszi

hdf · 2007. Jan. 14. (V), 11.21
Köszi emberek, végül így oldottam meg:
  1. xmlHttp.onreadystatechange = function() {  
  2.   if(xmlHttp.readyState == 4) upd(me.parentNode, xmlHttp.responseText);  
  3. }  
És az upd fügvény:
  1. function upd(me, data) {  
  2.   data = data.split(";");  
  3.   me.innerHTML = data[0];  
  4.   me.parentNode.bgColor = '#' + data[1].toLowerCase();  
  5. }  
4

Továbbgondolás

csla · 2007. Jan. 14. (V), 15.00
Jó ez így, én annyiban gondoltam tovább, és azért használok asszociatív tömböt, mert a tömb kulcsai, hogy mit akarok változtatni, az értékei pedig az új értékek. Így egy válaszban tetszőleges számú módosítást adok vissza, és csak végigmegyek a tömbön és végrehajtom őket, így:
  1. for (i = 0; i <= responseArray.length; i++)  
  2.  {  
  3.   jsCode = '$(' + responseArray[i]["ID"] + ').' + responseArray[i]["Type"] + '= "' + responseArray[i]["Content"] + '";';  
  4.   eval(jsCode);  
  5.  };