Ankündigung

Einklappen
Keine Ankündigung bisher.

AJAX und Rückgabewert

Einklappen

Neue Werbung 2019

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

  • AJAX und Rückgabewert

    Hallo, habe folgendes gemacht:
    Code:
    function save(){
    	phpreturn = false;
    	var xmlhttp;
    	if (window.XMLHttpRequest){
    		// code for IE7+, Firefox, Chrome, Opera, Safari
    	    xmlhttp=new XMLHttpRequest();
    	}else{
    		// code for IE6, IE5
    	    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	xmlhttp.onreadystatechange=function(){
    		if (xmlhttp.readyState==4 && xmlhttp.status==200){
    			if(xmlhttp.responseText=="true"){
    				phpreturn = true;
    				alert("true")
    			}else{
    				phpreturn = false;
    				alert("false");
    			}
    		}
    	}
    	var content = document.getElementById("input").value;
    	xmlhttp.open("POST","save.php",true);
    	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    	xmlhttp.send("content="+content);
    	
    	return phpreturn;
    }
    In der PHP Datei steht nur folgendes drinne:
    PHP-Code:
    <?php
    echo "true";
    ?>
    Aaaaber das Skript gibt irgendwie trotzdem nur false zurück. Zwar kommt an der Stelle:
    Code:
    if(xmlhttp.responseText=="true"){
    	phpreturn = true;
    	alert("true")
    }else{
    	phpreturn = false;
    	alert("false");
    }
    ein alert der auch "true" anzeigt, dennoch gibt die Funktion als solches immernoch false zurück, obwohl die globale variable "phpreturn" doch auf true gesetzt wird.
    Ich kann mir schon vorstellen woran das liegt, aber wie bekomme ich es hin, dass die Funktion einen Rückgabewert zurückgibt, der abhängig von dem ist, was das PHP-Skript liefert? Also das PHP-Skript wird am Ende einfach nur ein echo "true" oder "false" "zurückgeben".
    Und jenachdem was von PHP zurückkommt, soll auch die komplette Funktion save() "true" oder "false" zurückgeben...


    Wäre echt super wenn mir da jemand helfen könnte!


  • #2
    AJAX steht für Asynchronous JavaScript and XML, d.h. dein AJAX-Request ist noch garnicht beendet, wenn die Funktion returnt.

    Guck dir mal jQuery an, damit kannst du auch Synchrone Requests machen, allerdings solltest du eher alles was danach mit dem Response gemacht werden soll auch Asynchron in der onreadystatechange machen.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Okay, ich habs mir nun doch anders überlegt und brauche das nicht mehr.
      Danke trotzdem.

      Kommentar

      Lädt...
      X