Ankündigung

Einklappen
Keine Ankündigung bisher.

AJAX open mit POST und GET

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • AJAX open mit POST und GET

    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:

    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);
    		}
    	}
    }
    Im Buch war auch ein open Auszug wenn man per POST senden möchte muß man nur folgendes abändern:

    Code:
    		xmlHttp.open("POST", "test.php", true);
    		xmlHttp.onreadystatechange = handleServerResponse;
    		xmlHttp.send("name="+name);
    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
    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>';
    ?>
    Mit GET funktioniert das AJAX Skript (PHP $_POST bzw $_GET dann richtig gesetzt). Ich erhalte bei POST (AJAX) immer die Standardmeldung bei $name==''
    http://www.donvelopment.org


  • #2
    aus dem PHP Skript
    Bitte posten!

    Kommentar


    • #3
      Hier der Original Code aus dem Buch:

      http://www.packtpub.com/files/code/1825_Code.zip

      Chapter 1

      Habe am Original Code auch mal auf POST (JS Code sowie auch PHP) gestellt. Da funktioniert das ganze auch nicht.
      http://www.donvelopment.org

      Kommentar


      • #4
        und deshalb hast du dich entschieden die ganze code aus dem buch posten?
        unglaublich!!!
        -----------
        name = encodeURIComponent(document.getElementById("myName ").value);
        param='name=' + name;
        xmlHttp.onreadystatechange = handleServerResponse;
        xmlHttp.open("POST", "quickstart.php"+'?'+Math.random(), true);

        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", param.length);
        xmlHttp.setRequestHeader("Connection", "close");

        // make the server request
        xmlHttp.send(param);
        Slava
        http://bituniverse.com

        Kommentar


        • #5
          Danke. Funktioniert jetzt. Könnt mich ärgern über sowas. Kauft man sich schon mal nen Buch und dann funktionieren die Beispiele nicht mal richtig
          http://www.donvelopment.org

          Kommentar


          • #6
            tja!
            dann sage dem Autor, dass du seine Code veröffentlicht hast.
            Das wird ihn richtig umhauen.
            Slava
            http://bituniverse.com

            Kommentar

            Lädt...
            X