【发布时间】:2009-02-18 19:08:06
【问题描述】:
谁能告诉我如何将status 的值作为函数的返回值返回。
function checkUser() {
var request;
var status = false;
//create xmlhttprequest object here [called request]
var stu_id = document.getElementById("stu_id").value;
var dName = document.getElementById("dName").value;
var fileName = "check_user.php?dName=" + dName + "&stu_id=" + stu_id;
request.open("GET", fileName, true);
request.send(null);
request.onreadystatechange = function() {
if (request.readyState == 4) {
var resp = parseInt(request.responseText, 10);
if(resp === 1) {
alert("The display name has already been taken.");
status = false;
}
else if(resp === 2) {
alert("This student ID has already been registered");
status = false;
}
else if(resp === 0) {
status = true;
}
}
}
return status;
}
当您在注册表单中点击提交时会触发上述功能(必须很明显)。问题是,无论响应是什么,此表单都会提交,并且警报框有时不显示任何内容[空白],有时根本不显示。但是,如果我手动将结尾 status 更改为 false [即将status 替换为false],正确的值会显示在警告框中。
附:我比 javascript 的菜鸟还差,所以也欢迎提出一般改进代码的建议。
【问题讨论】:
-
您可能应该将标题更改为“使用 Ajax 调用从函数返回值”之类的内容,因为用户名与编码问题没有任何关系。
-
2009 年的问题如何作为 2013 年的问题的副本而关闭?投票重新开放。
标签: javascript ajax asynchronous