Ergebnis 1 bis 6 von 6
  1. #1
    Poehli ist offline Doppel-As
    registriert
    18-04-2009
    Beiträge
    111

    Question Variable nicht gesetzt bis alert() Funktion

    Hi,
    ich habe ein sehr seltsames Problem:
    ich habe eine ausgelagerte ajax Funktion mit 2 Optionalen und einem normalen Parametern.
    Code:
    var result = NULL;
    function ajax(id, url, send){
    	//optionale Variable send -> z.B. '?left=29&top=29' für getter in php file
            if (typeof(send) != "undefined"){
                var getterTmp = '?'+send;
                var getter = url+getterTmp;
            } else {
    	    var getter = url;
    	}
    	
    	//optionale Variable id falls kein Div ausgegeben werden soll
    	if (typeof(url) == "undefined"){
    	   var getter = id;
    	}
    	
    	// The variable that makes Ajax possible!   
    	var ajaxRequest; 
    
    	
    	try{
    		// Opera 8.0+, Firefox, Safari
    		ajaxRequest = new XMLHttpRequest();
    	} catch (e){
    		// Internet Explorer Browsers
    		try{
    			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    			try{
    				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch (e){
    				// Something went wrong
    				alert("Your browser broke!");
    				return false;
    			}
    		}
    	}
    	// Create a function that will receive data sent from the server
    	ajaxRequest.onreadystatechange = function(){
    		if(ajaxRequest.readyState == 4){
    			
    			
    			//falls kein Div benötigt wird, wird result Variable mit Text befüllt
    			if (typeof(url) == "undefined") {
    				result = ajaxRequest.responseText;
    			}
    			//falls Div benötig wird, wird es dort hinein ausgegeben
    			else {
    				var ajaxDisplay = document.getElementById(id);
    				ajaxDisplay.innerHTML = ajaxRequest.responseText;
    			}
    		}
    	}
    	ajaxRequest.open("GET", getter, true);
    	ajaxRequest.send(null);
    }
    alert(result);
    //Funktion die die result Variable versendet
    function replyAjax(url){
    	ajax(url);
    	alert(result);
    	
    	return result;
    }
    wenn ich jetzt aber die replyAjax Funktion aufrufe, ohne den alert(result) Befehl, wird result nicht versendet. Dies ist die dazugehörige PHP Datei.
    PHP-Code:
    $login mysql_connect("$login_host","$login_user","$login_pass");                   //Login zur Database
    mysql_select_db("$login_table");


    $getXY_qur mysql_query("SELECT * FROM `Doerfer` WHERE `user` = '$username'");
    $getXY mysql_fetch_row($getXY_qur);

    echo 
    $getXY[2].'|'.$getXY[3];
    mysql_close(); 
    (Der PHP code ist fehlerfrei und natürlich hab ich alle Variablen gesetzt.)

    Ich hatte vermutet, dass es daran liegen könnte, dass es noch nicht geladen war, also habe ich eine setTimout Funktion eingesetzt um das senden der Variablen zu verzögern, doch hat das auch nicht geklappt. Ich bin jetzt echt mit meinem Latein am Ende!
    Bitte helft mir

    mfg
    Pöhli

  2. #2
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: Variable nicht gesetzt bis alert() Funktion

    ajax ist asnychron! Du kannst niemals das Ergebnis mit return zurückgeben sondern musst es mit einem Callback verarbeiten.

  3. #3
    Poehli ist offline Doppel-As
    registriert
    18-04-2009
    Beiträge
    111

    AW: Variable nicht gesetzt bis alert() Funktion

    ok Danke schonmal, doch weiß ich leider nicht wie man das macht, oder was das ist... Ich benutze nicht oft JavaScrip/ Ajax also kann ich nur die absoluten Grundlangen! Wäre nett wenn du mir das nochmal erklären konntest oder ein Tutorial zeigen könnstest
    Danke
    Pöhli

  4. #4
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.760

    AW: Variable nicht gesetzt bis alert() Funktion

    Eine Möglichkeit wäre es, den Request synchron zu machen (dritter Parameter in .open)... dann brauchst du auch kein onreadstatechange , sondern kannst das .responseText direkt von der Funktion ajax zurückgeben lassen.

  5. #5
    Poehli ist offline Doppel-As
    registriert
    18-04-2009
    Beiträge
    111

    AW: Variable nicht gesetzt bis alert() Funktion

    Wow Danke kkapsner!
    Das war ja ziemlich einfach, wär ich aber nie drauf gekommen! Danke nochmal!

  6. #6
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.760

    AW: Variable nicht gesetzt bis alert() Funktion

    Bitte.

Ähnliche Themen

  1. Funktion funktioniert mit Variable nicht
    Von ReSutekh im Forum JavaScript
    Antworten: 8
    Letzter Beitrag: 22-11-2009, 01:12
  2. Antworten: 0
    Letzter Beitrag: 22-01-2008, 13:42
  3. Antworten: 15
    Letzter Beitrag: 31-12-2006, 03:29
  4. SESSION-Variable ist gesetzt, aber leer
    Von schwerminator im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 26-11-2006, 20:59

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •