also ich hab mir ein tutorial durchgelesen und den code in einer ajax.js geschrieben:
der html-Teil sieht so aus:
Es läuft alles wunderbar. Nur ich will das ganze bei mehreren Feldern machen, also habe ich mir gedacht, man kann die funktionen so umschreiben, dass man quasi ein wert übergibt.
Mein Gedanke war es so, dass der HTML-Teil so aussieht:
Beim Javascript müsste man das ja dann so umschreiben:
Das funktioniert auch noch. Doch ich muss ja auch den jeweiligen Inhalt der Div-Boxen ändern. Hab ich mir so vorgestellt:
Aber sobald ich in der doWork-Funktion bei "setOutputdiv" eine Klammer hintermache, geschweige denn einen Inhalt, der übergeben werden soll, ändert er ncihts mehr in der Div box, und sie bleibt leer. Die Abfrage mit richtigem responseText kommt aber.
Woran kann das liegen?? Oder Wie geht es anders??
Code:
function getHTTPObject(){
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest) return new XMLHttpRequest();
else {
alert("Your browser does not support AJAX.");
return null;
}
}
// Change the value of the outputText field
function setOutputdiv(){
if(httpObject.readyState == 4){
document.getElementById('divusername').innerHTML = httpObject.responseText;
}
}
// Implement business logic
function doWork(){
httpObject = getHTTPObject();
if (httpObject != null) {
httpObject.open("GET", "check.php?check=username&text="
+document.getElementById('username').value, true);
httpObject.send(null);
httpObject.onreadystatechange = setOutputdiv;
}
}
var httpObject = null;
Code:
<input type="text" onkeyup="doWork();" name="username" id="username"> <div id="divusername"></div>
Mein Gedanke war es so, dass der HTML-Teil so aussieht:
Code:
<input type="text" onkeyup="doWork('username');" name="username" id="username">
<div id="divusername"></div>
Code:
function doWork(ajaxtarget){
httpObject = getHTTPObject();
if (httpObject != null) {
httpObject.open("GET", "check.php?check=" + ajaxtarget + "&text="
+document.getElementById(ajaxtarget).value, true);
httpObject.send(null);
httpObject.onreadystatechange = setOutputdiv;
}
}
Das funktioniert auch noch. Doch ich muss ja auch den jeweiligen Inhalt der Div-Boxen ändern. Hab ich mir so vorgestellt:
Code:
function setOutputdiv(ajaxtargetid){
if(httpObject.readyState == 4){
document.getElementById(ajaxtargetid).innerHTML = httpObject.responseText;
}
}
function doWork(ajaxtarget){
httpObject = getHTTPObject();
if (httpObject != null) {
httpObject.open("GET", "check.php?check=" + ajaxtarget + "&text="
+document.getElementById(ajaxtarget).value, true);
httpObject.send(null);
httpObject.onreadystatechange = setOutputdiv("div" + ajaxtarget);
}
}
Aber sobald ich in der doWork-Funktion bei "setOutputdiv" eine Klammer hintermache, geschweige denn einen Inhalt, der übergeben werden soll, ändert er ncihts mehr in der Div box, und sie bleibt leer. Die Abfrage mit richtigem responseText kommt aber.
Woran kann das liegen?? Oder Wie geht es anders??

Kommentar