06. juni 2006 - 21:51Der er
10 kommentarer og 1 løsning
Ajax: Google suggest.
Hej eksperter.
Hvordan kan jeg med ajax lave noget ala google suggest?
Jeg skal have det til at lave opslag i en mysql database, med noget php.
Jeg har en database med vejnavne og havde så forestillet mig at når man skrev f.eks. de første 3 bogstaver af et vejnavn, så skulle den lave et opslag i databasen og vælge alle de vejnavne der begynder med de 3 bogstaver... - og igen, ved 4 bogstaver lave et nyt opslag.
Det jeg er mest bange for er at det kommer til at spatte helt af, hvis man skriver navnet for hurtigt. Så der skal vel være en form for "Afslut opslag af 3 bogstaver, hvis der er 4 bogstaver at søge efter nu" Jeg ved ikke lige ellers hvordan jeg skal forklare mig. Men håber der er nogle der kan komme med eksempler og hjælpe mig til en løsning af det. :D
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
var req; function processReqChange() { // only if req shows "complete" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { // ...processing statements go here... response = req.responseXML.documentElement;
result = response.getElementsByTagName('result')[0].firstChild.data;
eval(method + '(\'\', result)'); } else { alert("There was a problem retrieving the XML data:\n" + req.statusText); } } } function loadXMLDoc(url) { // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(null); // branch for IE/Windows ActiveX version } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } function checkName(input, response) { if (response != ''){ // Response mode message = document.getElementById('nameCheckFailed'); if (response == 1){ message.className = 'error'; }else{ message.className = 'hidden'; } }else{ // Input mode url = 'CheckUserName.php?q=' + input; loadXMLDoc(url); }
}
</script>
<input id="username" name="username" type="text" onblur="checkName(this.value,'')" /> <br /> <span class="hidden" id="nameCheckFailed"> This name is in use, please try another. </span>
PHP delen----------------------------------------
<?php header('Content-Type: text/xml');
/*function nameInUse($q) { if (isset($q)){ switch(strtolower($q)) { case 'drew' : return '1'; break; case 'fred' : return '1'; break; default: return '0'; } }else{ return '0'; }
}*/
$mysql_host = "localhost"; $mysql_user = "livret"; $mysql_password = "ryan"; mysql_connect($mysql_host,$mysql_user,$mysql_password); mysql_select_db("livretten"); function nameInUse($q){ if (isset($q)){ $r = mysql_fetch_row( mysql_query("SELECT * FROM `xmltest` WHERE navn LIKE '$q'")); if ($r == (false)) { return '0'; } else { return '1'; }
Nuvel ... den sidste kan vist kun irritere en bruger. Et rigtig godt eksempel på elendig/misforstået brug af AJAX. Hvem i alverden kan dog finde på, man skal downloade kilometervis af JavaScripts - blot for at lave en AJAX-autocomplete?
Sorry, jokkejensen - men det JS-lib (og hvad der skal til at bruge det) sutter BIG TIME! Det er der _absolut_ intet fedt ved ... bortset fra, det er et fedt eksempel på rigtig ufed kode :)
Jeg forsøgte selv at ændre den kode jeg pastede igår, men det blev noget værre rod og den måde jeg ville gøre det på kan ikke lade sig gøre, eftersom php bliver kørt før javascripten. :(
Det var da vidst en smutter det her. Det må i undskylde gutter. Vær venlig at lægge et svar, så jeg kan få lukket spørgsmålet :D - Tak for jeres hjælp og ledetråde :D
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.