12. juli 2009 - 20:40Der er
7 kommentarer og 1 løsning
Validering af form med AJAX input
Hej,
Hvordan kan jeg i et javascript validere et AJAX svar ?
Jeg har en formular hvor jeg checker de fleste felter med alm. javascript, det virker fint, men det ene felt checker jeg med et AJAX kald, da der skal et opslag i databasen for at godkende feltet. I browser vinduet skrives via ajaxDisplay.innerHTML at indholdet er "Ok." eller "Fejl"
Her kommer ajax funktionen (virker fint):
function ajaxFunction(){ var ajaxRequest; // The variable that makes Ajax possible!
try{ // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } // Create a function that will receive data sent from the server ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){ var ajaxDisplay = document.getElementById('ajaxDiv'); ajaxDisplay.innerHTML = ajaxRequest.responseText; } } var brewid = document.getElementById('brewid').value; var beername = document.getElementById('beername').value; var queryString = "?brewid=" + brewid + "&beername=" + beername; ajaxRequest.open("GET", "/ajax/beerok.php" + queryString, true); ajaxRequest.send(null); }
Når jeg så vil checke 'ajaxDiv', er feltet tomt / undefined.
function formValidatorB(){ var beerok= document.getElementById('ajaxDiv'); if(isBeerOk(beerok,"Øllen er allerede oprettet")){ return true;
} return false;
}
function isBeerOk(elem, helperMsg){ if(elem.value=="Ok."){ return true; } else{ alert(elem.value); return false; } } functionen herover fejler, elem.value er "undefined"
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.
formValidatorB bliver kaldt fra en html formular, noget af formulaen kan ses her:
<form action="/beers2.php?m=add" onsubmit="return formValidatorB();" method="POST"> <p> Skriv info om Øl / vælg op til 4 billeder:<br> Felter med * skal udfyldes!</p> <table width="100%" border="0"> <tr> <td>Bryggeri: </td> <td colspan="2"><select name="brewid" id="brewid" size = "1"> <option selected value="615">Burton Bridge Brewery</option> </select> </td> <td width="55%"><a href="/beers2.php? m=add&brewid=615">Vælg et andet bryggeri</a></td> </tr> <tr> <td width="17%"><p>Navn på Øl: *<br> </p></td> <td><input name="beername" id="beername" onkeyup='ajaxFunction()' type="text" value=""> </td><td id='ajaxDiv'></td><td>
Navnet checkes med "ajaxFunction()" og resultatet vises i kolonnen efter. Det er denne 'ajaxDiv' jeg gerne vil checke med formValidatorB (jeg har af hensyn til overskueligheden, slettet nogle if'er fra formValidatorB)
Jeg kan pt ikke vise et link, da der kræves et login for at komme til denne formular, men det vil jeg ændre senere i dag.
Det virker efter at jeg fik indsat en enkelt lille ) efter ajaxDisplay.appendChild(document.createTextNode( ajaxRequest.responseText )
Af en eller anden grund så kan der ikke længere passere æøå fra mit php script der udfører kontrollen i databasen og ajax ? Enten så kommer der et ? hvis jeg skriver f.eks. ø skriver jeg ø så kommer det ud på skærmen. Men pyt, jeg har fundet på en anden tekst. det vigtigste, at det kontrolleres i javascriptet det virker fint.
Nu har jeg ikke benyttet eksperten.dk så længe, så hvordan får jeg emnet her lukket og tildelt dig de points du fortjener ?
Jeg indrømmer gerne at jeg er nybegynder inden for javascripts, derfor er det super at kunne spørge eksperterne. Har for selv at lære mere lige bestilt en bog fra SitePoint om emnet: "The Art & Science Of JavaScript"
Problemerne med æ, ø og å skyldes, at du benytter flere forskellige tegnsæt i én og samme applikation. Hvis du bruger samme tegnsæt i alle led, er der ikke problemer med specialtegn og Ajax
/mvh </bole>
Synes godt om
Ny brugerNybegynder
Din løsning...
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.