我一整天都在试图解决这个问题,但似乎我无法解决。
这是我的代码:
function mailcheckajax(email){
//var add = $('#mail').val();
//window.location = "index.php?address="+add;
//alert(window.location.pathname);
var loc = window.location.pathname;
var dir = loc.substring(0, loc.lastIndexOf('/'));
var xmlhttp;
// code for IE7+, Firefox, Chrome, Opera, Safari
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
if(xmlhttp.responseText != "valid"){
window.mailerror = "true";
} else {
window.mailerror="false";
}
}
}
xmlhttp.open("GET","/application/views/client/mailvalidate.php?address="+$('#'+email).val(),true);
xmlhttp.send();
return "true";
}
它调用这个函数并出现另一行代码:
mailcheckajax('studentEmail');
if (checkvalidate == "true") {
if (validateStep(oldstep) == false) {
$("html, body").animate({
scrollTop: 0
}, "slow");
return false;
}
}
我需要在 onclick() 上首先完全执行 mailcheckajax 函数,以便使用 ajax 从服务器获取响应,并且只有在其他代码之后才执行。或者在获得 ajax 响应之前不要退出函数。
有人可以帮忙吗?
最佳答案
您应该在对另一个函数的响应之后添加需要执行的其他代码,并在处理程序内调用该函数:
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
if(xmlhttp.responseText != "valid"){
window.mailerror = "true";
//CALL HERE THE FUNCTION YOU WANT TO EXECUTE AFTER THE RESPONSE IS RECEIVED
} else {
window.mailerror="false";
}
}
}
希望有帮助!
关于javascript - 在继续执行另一个代码之前等待函数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405268/