JS - 无法将AJAX的响应指定为自定义变量

时间:2015-12-26 23:11:46

标签: javascript ajax

我有这段代码:

var reg_email = document.getElementById("reg_email").value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var response_email_check = xmlhttp.responseText;
    }
};
xmlhttp.open("GET", "./lib/checkemail.php?str=" + reg_email, true);
xmlhttp.send();

我需要变量中的响应,因为我需要稍后使用它。如果我运行它,它甚至不会创建变量“response_email_check”。我是AJAX / JS的先生,我做错了什么?

1 个答案:

答案 0 :(得分:1)

为了访问if语句范围之外的变量 (if(...){ here }之间的任何东西),你必须事先声明它。 但是因为你只是在ajax成功的情况下分配它的值,所以我建议将它传递给知道如何处理它的函数。 像这样:

var reg_email = document.getElementById("reg_email").value;

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var response_email_check = xmlhttp.responseText;

        onCheckEmail(response_email_check);
    }
};
xmlhttp.open("GET", "./lib/checkemail.php?str=" + reg_email, true);
xmlhttp.send();

您必须定义函数onCheckEmail

function onCheckEmail(response_email_check){
    alert(response_email_check);
}

如果未显示警报,请检查ajax是否成功。您可以通过在if语句中添加else来完成此操作:

    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var response_email_check = xmlhttp.responseText;

        onCheckEmail(response_email_check);
    }else {
        alert("A server error occurred!");
    }