javascript - 在继续执行另一个代码之前等待函数执行

标签 javascript jquery ajax

我一整天都在试图解决这个问题,但似乎我无法解决。

这是我的代码:

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/

相关文章:

javascript - 使用 switch 语句选择单选按钮时更改 href 值

javascript - GZip 与移动浏览器

javascript - 通过模板输出时Python字典对象转换为JSON

jquery - 如何将 event.preventDefault 与 KnockoutJs 单击事件处理程序一起使用?

javascript - 根据 slider 值显示和隐藏元素

javascript - 如何更改段落文本 onclick 列表项?

javascript - 类似 Facebook 的开源聊天(使用 Jabber 或 IRC)

javascript - 需要将ajax响应分配给div

javascript - ajax ie跨浏览器activexobject问题

javascript - 使用 javascript 和 php 从数据库获取数据