hallo
ich bin am Ajax lernen, habe einen Kurs besucht und experimentiere nun mit Scripten aus dem Kurs.
hier im Bsp. habe ich eine fkt. "schreib()", welche 3 parameter bekommt und wiederum eine fkt. "ajax()" aufruft, welche einen Ajax Request absetzt. Es wird der Inhalt der txt datei "21_hallowelt.txt" geholt und ausgegeben. Es steht dort nur "Hallo Welt" drinnen.
Ich möchte meine scripte möglichst universell halten, deswegen kann ich es nicht leiden, wenn in der Fkt. die die Ajaxinstanzen aufruft, die Ergebnisse direkt verarbeitet werden (wie im Kurs-Beispiel).
Ursprünglich wurde das <div> mit der ID "hallo" direkt in Zeile 44 mit dem Ergebnis von req.responseText beschrieben- das hat funtionier. Wie gesagt das möchte ich vermeiden und den Wert lieber über'n return() zurückgeben. in Zeile 11 werden die nötigen Parameter auch korrekt übernommen. Egal ob ich meinen return() in zeile 45 oder 45 schreibe, er gibt jedesmal "undefined" zurück. Der alert() in Zeile 44 gibt aber korrekt "Hallo Welt" aus!
Zum besseren Zeilenfinden hab ich den Code nochmal hier:
http://paste.ubuntuusers.de/392404/
hier das funktionierende Kursbeispiel:
http://paste.ubuntuusers.de/392406/
Was mach ich falsch? danke.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtm1/DTD/xhtml-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Ajax: erste Ajax applikation </title>
</head>
<body>
<script type="text/javascript">
//<![CDATA [
var result;
function schreib(meth,ressource,sync)
{
var d = document.getElementById("hallo"); // DOM Befehl
d.innerHTML = ajax(meth,ressource,sync);
}
function ajax(meth,ressource,sync)
{
var r;
var req = (window.XMLHttpRequest)
?
new XMLHttpRequest() // für Gecko
:
((window.ActiveXObject)
?
new ActiveXObject("Microsoft.XMLHTTP") // für IE
:
false
);
// Request : open( methode, URL, true bei asynchron false bei synchron)
req.open(meth,ressource,sync)
// Zustand der Verbindung
req.onreadystatechange = function()
{
//Anfrage erfolgreich
if (req.readyState == 4) // loadet, fertiggeladen siehe bei "Properties"
{
// Status der Antwort
if (req.status == 200)
{
r = req.responseText; // obj. d wird mit resonseText beschrieben
alert(r);
return(r);
//
}
}
}
// return(r);
// Verbindung beenden
req.send(null);
}
// ]]>
</script>
<body onload="schreib('GET','21_hallo.txt',true);">
<div id="hallo"></div>
</body>
</html>