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

时间:2014-08-20 12:53:12

标签: 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响应之前不退出函数。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

你应该在响应另一个函数之后添加你需要执行的其他代码,并在处理程序中调用该函数:

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";
        }
    }
}

Hopte有帮助!