Problemet är att xmlHttp-anropet körs i en separat tråd, så därför kan du inte på traditionellt sätt returnera ett värde i checkForm.
Det jag skulle gjort är att checkForm alltid avbryter submit. Och att du sen i stateChanged submittar igen eller visar ett felmeddelande.
Hej!
Jag har ett formulär som anropar funktionen checkForm() när det skickas. En PHP-fil validerar då formuläret och tanken är att funktionen ska returnera true om inget felmeddelande skrivs ut, annars false. Beroende på vilket värde som returneras så fortsätts eller avbryts den submit som pågår. Problemet är att jag inte kan få värdet från stateChanged() att bli det värde som returneras av checkForm(). Är väldigt ny på den här typen av JavaScript så den kod jag använder har jag i princip bara klistrat in. Vet någon av er hur det här kan lösas?
function checkForm() {
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Browser does not support HTTP Request")
return
}
var url="check_form.php";
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChanged() {
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
if (xmlHttp.responseText == "")
return true;
else
return false;
}
}
function GetXmlHttpObject() {
var xmlHttp=null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e) {
//Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}