gpt4 book ai didi

php - Javascript 等待 PHP 函数返回

转载 作者:搜寻专家 更新时间:2023-10-31 21:36:44 25 4
gpt4 key购买 nike

我有一个 javascript 函数,我需要它在继续之前验证数据库中的一些信息。这是一个简单的 bool 条件。如果为真,则继续,否则终止。问题似乎是 javascript 函数立即将函数调用评估为“false”,从而终止执行。它在函数实际返回之前执行此操作,因此即使内部函数返回 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;

}

这是输出:

verified session_handler.js:11

verification failed users.php:33

因此,您可以看到 if 条件输出字符串“verified”,因此返回“true”结果。但主要功能正在将其评估为“假”,字符串输出“验证失败”证明了这一点。我该怎么做才能纠正这个问题?

谢谢!

最佳答案

这是因为您 xmlhttp.onreadystatechange=function() 正在返回 true,但是 verifySession() 正在返回 此处为假:

xmlhttp.open("GET", "scripts/verifySession.php", true);
xmlhttp.send();
return false;

我的想法是做这样的事情:

function verifySession() {

var xmlhttp = new XMLHttpRequest();


var returnValue = 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 returnValue;

希望对您有所帮助! :)

关于php - Javascript 等待 PHP 函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17505829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com