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:

xmlHttp.open("POST", "ajax.php", true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.send("id=" + me.parentNode.id + "&data=" + me.value);
És így kapom meg a választ:

xmlHttp.onreadystatechange = function() {
  if(xmlHttp.readyState == 4) me.parentNode.innerHTML = xmlHttp.responseText;
}
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:

xmlHttp.onreadystatechange = function() {
  if(xmlHttp.readyState == 4) {
    me.parentNode.innerHTML = xmlHttp.responseText["data"];
    me.parentNode.bgcolor = xmlHttp.responseText["color"];
  }
}
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:

xmlHttp.onreadystatechange = function() {
  if(xmlHttp.readyState == 4) upd(me.parentNode, xmlHttp.responseText);
}
És az upd fügvény:

function upd(me, data) {
  data = data.split(";");
  me.innerHTML = data[0];
  me.parentNode.bgColor = '#' + data[1].toLowerCase();
}
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:

   for (i = 0; i <= responseArray.length; i++)
    {
     jsCode = '$(' + responseArray[i]["ID"] + ').' + responseArray[i]["Type"] + '= "' + responseArray[i]["Content"] + '";';
     eval(jsCode);
    };