AJAX DB-Abfrage während der Eingabe
Verfasst: So 13.Mai, 2007 21:53
hab mich nun ein wenig in die ajax-materie eingefuchst.
habe ein input-feld wo man einen namen eingeben kann. für jeden eingegeben buchstaben wird eine abfrage gestartet.
die entsprechende js-datei dazu:
wurde nichts ins feld eingetippt, so erscheint auch nichts. dafür ist folgende zeile verantwortlich:
funktioniert soweit alles prima.
nur: wenn man mind. einen suchtreffer hat, so wird da ergebnissfeld "visible". tippt man jetzt einen buchstaben ein, der zu keinem treffer führt, so ist die ergbnissliste leer. diese sollte aber nun besser "invisible" sein.
der aufruf der php-abfrage geschieht ja mittels: gibt diese zeile ein ergebnis zurück, das abgefragt werden kann?
wie könnte ich das realisieren?
¢¦
habe ein input-feld wo man einen namen eingeben kann. für jeden eingegeben buchstaben wird eine abfrage gestartet.
Code: Alles auswählen
Name:<input name="name" type="text" size="30" maxlength="25" onkeyup="macheRequest();" />Code: Alles auswählen
var http_request = false;
function macheRequest() {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// zu dieser Zeile siehe weiter unten
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
return false;
}
if(document.f1.name.value !="")
{
http_request.open('get', 'suggest.php?name=' + escape(document.f1.name.value.toLowerCase()), true);
http_request.onreadystatechange = handleResponse;
http_request.send(null);
}
else
{
document.getElementById("antwort").style.visibility = "hidden";
}
}
function handleResponse()
{
document.getElementById("antwort").style.visibility = "visible";
if(http_request.readyState == 4)
{
document.getElementById("antwort").innerHTML = http_request.responseText;
}
}
/*
*/
//zum test
function uebernehme()
{
document.f1.name.value = document.f1.vorschlag.value;
}Code: Alles auswählen
if(document.f1.name.value !="")nur: wenn man mind. einen suchtreffer hat, so wird da ergebnissfeld "visible". tippt man jetzt einen buchstaben ein, der zu keinem treffer führt, so ist die ergbnissliste leer. diese sollte aber nun besser "invisible" sein.
der aufruf der php-abfrage geschieht ja mittels:
Code: Alles auswählen
http_request.open('get', 'suggest.php?name=' + escape(document.f1.name.value.toLowerCase()), true);wie könnte ich das realisieren?
¢¦