Ralf W.: Funktion merhmals aufrufen.

Ich habe mir ein AJAX-Skript geschrieben, welches von meinder Domain (von einem PHP-File) Infos beziehen soll. Das klappt auch wunderbar. Nur wenn ich mehrere Infos bezhiehen will, zeigt es immer nur letzteres an - es überschreibt wie die erste Aufforderung.

Kann man das irgendwie ändern?

Der Code;

  
   var http_request = false;  
  
    function getInfo(getid, getvar, what) {  
    	  
        if(what == 'IP'){  
        data = '<?=$_SERVER['REMOTE_ADDR']?>';  
        }else if(what == 'UA'){  
        data = '<?=$_SERVER['HTTP_USER_AGENT']?>';  
        }  
  
        http_request = false;  
  
        if (window.XMLHttpRequest) {  
            http_request = new XMLHttpRequest();  
            if (http_request.overrideMimeType) {  
                http_request.overrideMimeType('text/xml');  
            }  
        } else if (window.ActiveXObject) {  
            try {  
                http_request = new ActiveXObject("Msxml2.XMLHTTP");  
            } catch (e) {  
                try {  
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");  
                } catch (e) {}  
            }  
        }  
  
        if (!http_request) {  
            alert('Skript-Error! XMLHTTP-Instanz-Generierung scheint unmoeglich.');  
            return false;  
        }  
        http_request.onreadystatechange = function() {  
			changeInhalt(getid);  
		};  
        http_request.open('GET', 'http://meinedomain.de/ip.php?'+getvar+'='+data, true);  
        http_request.send(data);  
    }  
  
    function changeInhalt(getid) {  
  
        if (http_request.readyState == 4) {  
            if (http_request.status == 200) {  
  
                element = document.getElementById(getid);  
                element.innerHTML = http_request.responseText;  
  
            } else {  
                alert('Es ist ein Problem aufgetreten.');  
            }  
        }  
  
    }  

Der Aufruf; (Hier wird nur das zweite Angezeigt)

  
<script type="text/javascript">  
   getInfo('showIPland', 'ip', 'IP');  
getInfo('browser', 'browser', 'UA');  
 </script>  
<span id="showIPland">laden...</span>  
<span id="browser">laden...</span>  

  1. hi,

    Ich habe mir ein AJAX-Skript geschrieben, welches von meinder Domain (von einem PHP-File) Infos beziehen soll. Das klappt auch wunderbar. Nur wenn ich mehrere Infos bezhiehen will, zeigt es immer nur letzteres an - es überschreibt wie die erste Aufforderung.

    Kann man das irgendwie ändern?

    Klar. Mach Dir Gedanken, wie eine responseText aussehen könnte, die _mehrere_ Informationen enthält. Neben 'Text' gibt es noch XML und JSON.

    Für die meisten meiner Ajax-Geschichten nehme ich nur Textstrings mit Trennzeichen und verwurste die mit split für Listen oder inputfelder...

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
  2. Hi,

      
    
    >    var http_request = false;  
    
    

    diese *eine* Variable hast Du vorgesehen, um exakt so viele AJAX-Requests zu handhaben. Und bevor Du jetzt den Fehler begehst, eine zweite Variable anzulegen: Beschäftige Dich mit Objektorientierung.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes