# http.send() mehrere Werte übertragen



## soa (15. Februar 2008)

Hallo zusammen,

ich frage mich, wie ich mehrere Werte gleichzeitig per Request an den server übertragen kann. Sinn macht es nur, wenn ich dann auch irgendwie die Rückgabewerte vom Server 
differenzieren kann:

Einzelwertübermittlung:


```
function setText() {
if (document.f2.anzeigentext.value != ""){ 

if (http != null) {
http.open("POST", "ausgabe2.php", true);
http.onreadystatechange = ausgabeText;
http.setRequestHeader(
"Content-Type",
"application/x-www-form-urlencoded");
http.send("anzeigentext="+document.f2.anzeigentext.value);

}//end if
}//end if
} //function

function ausgabeText() {
if (http.readyState == 4) {
document.getElementById("ausgabe_text").innerHTML =
http.responseText;
}
}
```

Jetzt möchte ich verschiedene Werte übertragen, bzw. in erster Linie die Rückgabewerte
in verschiedenen Spans ausgeben. Nur kann ich hiermit nicht unterscheiden:

document.getElementById("ausgabe_text").innerHTML =
    http.responseText;

Geht das überhaupt ? 

Vielen Dank im Voraus.


Grüße


----------



## Sven Mintel (15. Februar 2008)

Mehrere Parameter übergibst du, indm du die einzelnen Parameter durch ein & trennst:

```
anzeigentext="+document.f2.anzeigentext.value+"&nocheinparameter=nocheinwert"
```

Wie du die Rückgabe vom Server verarbeitest, da füren 1001 Wege nach Rom.

Du könntest bspw. anstatt vom Server nur mit einem String, der einzufügen ist, zu antworten, gleich mit den kompletten JS-Anweisungen antworten.

Bsp.:

```
document.getElementById("irgendeinelement").innerHTML ='neuer Inhalt';
```
Die Antwort des Servers musst du dann nur per eval() ausführen.


----------



## soa (15. Februar 2008)

Hallo Sven,

vielen Dank für Deine Antwort. Direkt auf dem Server den Inhalt zuweisen klingt super.

Ihr habt ja jetzt hier ein bissl. Werbung auf der Seite. Kannst Du vielleicht ein Buch empfehlen, in dem unter Anderem solche Probleme wie sie hier auftreten , beschrieben werden ?

Wenn ich nun eval() vermeiden möchte, wäre es dann auch denkbar in den Rückgabewert ein
Trennzeichen einzubauen. z.B. ein § und dann den Rückgabewert mit Hilfe des Zeichens zu splitten ?

Vielen Dank.


Grüße
Soa


----------



## Sven Mintel (15. Februar 2008)

Hi Soa,


Literatur dazu würde ich eher nicht empfehlen wollen, es gibt ständig Neuerungen bei Browsern und AJAX-Frameworks, da ist ein Buch vom letzten Jahr oft schon nicht mehr aktuell.

Im WWW gibt es zahlreiche Quellen, die genug Informationen zu der Thematik bieten, und das viel aktueller, als es ein Buch je sein kann.


Was die Idee mit dem Trennzeichen und dem Splitten betrifft, das ist natürlich auch eine Möglichkeit, um die Daten vom Server zu bekommen und ordentlich identifizieren zu Können


----------



## kuddeldaddeldu (15. Februar 2008)

Hi,



> Wenn ich nun eval() vermeiden möchte, wäre es dann auch denkbar in den Rückgabewert ein
> Trennzeichen einzubauen. z.B. ein § und dann den Rückgabewert mit Hilfe des Zeichens zu splitten ?



Oder Du schaust Dir mal JSON an. 

LG


----------



## soa (15. Februar 2008)

OK,

das mit dem Splitten des Strings läuft ganz OK.


```
function ausgabeText() {
     if (http.readyState == 4) {
     //Rückgabewert vom Server
     var value = http.responseText;
     
     //Werte zum Splitten festlegen
     var ida  = value.indexOf("#");
     var idb  = value.indexOf("#") + 1 ;
     var end = value.lastIndexOf(">") ; 
     //Splitten des Strings
     var text  = value.substr(0, ida );
     var preis = value.substr(idb, end );
     
    // alert(preis); 
     
      document.getElementById("ausgabe_text").innerHTML = text; 
      document.getElementById("preis").innerHTML = preis; 
   }
}
```

Doch das mit eval hat nicht hingehauen. Du meintest das Javascript eval oder ?

Also :

In der Server page :

<script type="text/javascript">
eval( document.getElementById("preis").innerHTML = 'irgendetwas' ); 
 </script>

Irgendetwas sollte ja eine PHP Variable sein - also vielleicht doch PHP - eval() ?


VG


----------



## Sven Mintel (16. Februar 2008)

soa hat gesagt.:


> Doch das mit eval hat nicht hingehauen. Du meintest das Javascript eval oder ?
> 
> Also :
> 
> ...



Ich meinte schon das JS-eval()

Der Server sollte nur mit der Anweisung antworten, die der Client per eval() ausführt.

Also z.B. in der Form:
	
	
	



```
document.getElementById("preis").innerHTML = 'irgendetwas'
```
...ohne <script>-Tags oder sonstwas.

Deine PHP-Variablen gibst du einfach dort aus, wo sie hinsollen:

```
document.getElementById('<?php echo $var1;?>').innerHTML = '<?php echo $var2;?>';
```

Clientseitig gibts dann, sobald die Antwort da ist, nur noch
	
	
	



```
eval(http.responseText);
```
...fertitsch


----------



## soa (10. März 2008)

Ok, eigentlich war dieser Thread ja schon tot, aber hier ist nun einmal das Stichwort 
JSON gefallen. Ich habe mich jetzt einmal etwas belesen. Ist JSON denn immernoch
die bessere Alternative zu XML, wenn es um JS Projekte bzw. den Einsatz von Ajax geht.

Ich habe gelesen, dass die Vorteile nur solange bestehen, bis 

ECMAScript for XML (E4X) sich voll durchgesetzt hat. Wie steht es denn damit ?

So wie ich das auf der Website von JSON verstanden habe, muss der Parser noch 
auf dem Server installiert werden. Ab PHP 5.2 ist JSON wohl standardmäßig implementiert

Vielleicht mag mir noch einmal jemand bestätigen, dass es sich lohnt JSON
mal etwas genauer zu betrachten.


Vielen Dank im Voraus.


----------

