我有这段代码:
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的先生,我做错了什么?
答案 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!");
}