Ich habe mir jetzt ein Buch gekauft, weil ich mich mal etwas näher mit AJAX beschäftigen und auch einsetzen möchte. Allerdings bin ich auf ein kleines Problem gestoßen. Und zwar bei folgendem Beispielskript:
Im Buch war auch ein open Auszug wenn man per POST senden möchte muß man nur folgendes abändern:
Allerdings erhalte ich die Standardrückmeldung aus dem PHP Skript, die Eingabe "name" anscheinend nicht gesendet wird oder der Wert leer ist.
PHP Skript test.php
Mit GET funktioniert das AJAX Skript (PHP $_POST bzw $_GET dann richtig gesetzt). Ich erhalte bei POST (AJAX) immer die Standardmeldung bei $name==''
Code:
var xmlHttp = createXmlHttpRequestObject(); function createXmlHttpRequestObject() { var xmlHttp; // IE if(window.ActiveXObject) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlHttp = false; } } else { // other try { xmlHttp = new XMLHttpRequest(); } catch (e) { xmlHttp = false; } } if(!xmlHttp) alert("Error creating the XMLHttpRequest object."); else return xmlHttp; } function process() { // 0 - uninitialized // 1 - loading // 2 - loaded // 3 - interactice // 4 - complete if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0) { name = encodeURIComponent(document.getElementById("myName").value); xmlHttp.open("GET", "test.php?name="+name, true); xmlHttp.onreadystatechange = handleServerResponse; xmlHttp.send(null); } else setTimeout('process()', 1000); } function handleServerResponse() { if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { xmlResponse = xmlHttp.responseText; // xmlDocumentElement = xmlResponse.documentElement; // helloMessage = xmlDocumentElement.firstChild.data; document.getElementById("divMessage").innerHTML = '' + xmlResponse + ''; setTimeout('process()', 1000); } else { alert("There was a problem accessing the server: " + xmlHttp.statusText); } } }
Code:
xmlHttp.open("POST", "test.php", true); xmlHttp.onreadystatechange = handleServerResponse; xmlHttp.send("name="+name);
PHP Skript test.php
Code:
<?php header('Content-Type: text/xml'); ?> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?php // echo '<response>'; $name = $_POST['name']; $usernames = array('HOLGER', 'ANJA', 'FLO', 'KITTY'); if(in_array(strtoupper($name), $usernames)) { echo 'Hello, master ' . htmlentities($name) . '!'; } elseif (trim($name)=='') { echo "Stranger, please tell me your name!"; } else { echo htmlentities($name) . ", I dont't known you!"; } // echo '</response>'; ?>
Kommentar