我有一个 javascript 函数,我需要它在继续之前验证数据库中的一些信息。这是一个简单的布尔条件。如果为真,则继续,否则终止。问题似乎是javascript函数立即将函数调用评估为“假”,从而终止执行。它在函数实际返回之前执行此操作,因此即使内部函数返回 true,主函数也会错误地终止。
我对 js、php 和 ajax 还是很陌生。我猜这是异步 php 调用的结果。我对这个结论是否正确?如果是这样,有没有办法让javascript函数暂停,直到它收到函数调用的结果?
这是我的代码。感谢您的任何建议。
首先,使用 onclick 按钮调用的主要 javascript 函数(在文件 'users.php' 中):
function deleteUser() {
//check for excessive inactivity
if (verifySession()) {
console.log("verified");
} else {
console.log("verification failed"); //<--line 33
return false;
}
//continue on...
这是 if 语句调用的函数(在文件 'session_handler.js' 中):
function verifySession() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var response = xmlhttp.responseText;
console.log(response); //<--line 11
if (response != "verified") {
window.location.href = "signin.html";
return false;
} else {
return true;
}
}
}
xmlhttp.open("GET", "scripts/verifySession.php", true);
xmlhttp.send();
return false;
}
这是输出:
已验证 session_handler.js:11
验证失败 users.php:33
因此,您可以看到 if 条件输出字符串“已验证”,因此返回“真”结果。但主要功能是将其评估为“假”,字符串输出“验证失败”就证明了这一点。我能做些什么来纠正这个问题?
谢谢!