kostenloser Webspace werbefrei: lima-city


AJAX - Funktionsrückgabe

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    mermadalis

    Kostenloser Webspace von mermadalis

    mermadalis hat kostenlosen Webspace.

    Guten Abend zusammen,

    Ich habe gerade ein sehr merkwürdiges Phänomen mit zwei JavaScript-Funktionen festgestellt:

    Ich habe eine AJAX-Funktion, die beim Aufruf per HTTP-POST bestimmte Daten an eine bestimmte URL schickt und die Antwort des Servers per return zurückgeben soll:

    function http_post(url, data)
    {
    	r = null;
     
    	if(window.XMLHttpRequest)
    	{
    		r = new XMLHttpRequest();
    	}
    	else if(window.ActiveXObject)
    	{
    		try
    		{
    			r = new ActiveXObject('Msxml2.XMLHTTP');
    		}
    		catch(e1)
    		{
    			try
    			{
    				r = new ActiveXObject('Microsoft.XMLHTTP');
    			}
    			catch(e2)
    			{
    				alert('Error');
    			}
    		}		
    	}
     
    	if(r != null)
    	{
    		// HTTP-POST
    		r.open('POST', url, true);
    		r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    		r.send(data);
            
            r.onreadystatechange = function ()
            {
                if ( r.readyState == 4)
                {
                    output = r.responseText;
                }
            }
    	}
        
        return output.toString();
    }


    Diese Funktion wird von einer weiteren Funktion verwendet:

    function init(var)
    {   
        alert ( http_post('http://example.com/path/script.php', 'data=' + var) );
    }


    Das ganze wird in HTML in einen Button eingebunden:

    <button onclick="init('asdf123')">Klick mich!</button>


    Die Rückgabe des PHP-Scripts ist "123" (ohne "). Allerdings gibt das Script nicht das aus, was es ausgeben soll. Wenn ich einmal auf den Button klicke, passiert nichts. Wenn ich nochmal klicke, bekomme ich die korrekte Ausgabe.
    Aber eigentlich sollte die Ausgabe schon kommen, wenn ich das erste Mal auf den Button klicke.

    Wie kann ich das Problem lösen?

    Vielen Dank,
    mermadalis
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    Das Problem liegt darin, dass das Script nicht wartet, bis der Request ausgeführt wurde sondern das Script weiter abarbeitet. Die Funktion "onreadystatechange" wird also erst nach dem Alert ausgeführt und darum erst beim zweiten Aufruf mit einem Wert (aus dem ersten Aufruf). Ändern könntest du das, indem du das Alert im onreadystatechange aufrufst.
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!