1 回答
TA贡献1775条经验 获得超8个赞
我没有在您的 JS 代码中看到任何实际的轮询,例如。不是setInterval那种东西。要每 10 秒实际运行一次 JS 函数,您应该需要以下内容:
const doRequest = () => {
$.ajax({
type: "POST",
url: "ajax/mysqlQuery.php",
data: 'userID=10'
}).done(function(result) {
if (result) {
// DO SOMETHING
}
});
}
setInterval(doRequest, 1000);
关于 PHP 部分,我认为您的脚本中不需要 a while(!$data){ ... },因为只有在进行 AJAX 调用时才会对其进行评估,因此您实际上可以摆脱它。
我已经修改了您的 PHP 代码中的一些内容,我将对此进行解释
<?php
// just leave it alone at the beginning
include("../inc/config.php");
$statement = $mysqli->prepare("SELECT * FROM `table` WHERE userID = ?");
$statement->bind_param("s", $_POST["userID"]);
$statement->execute();
$result = $statement->get_result();
$data = null;
// maybe you can use $result->fetch_assoc() directly instead of returning an object and mapping it back to an associative array
while($row = $result->fetch_object()) {
$data[] = array("ID" => $row->ID);
}
// close the statement for better PHP performances
$statement->close();
// return it
echo json_encode($data);
?>
如果您的脚本将继续花费超过 2 分钟的时间来回答,则可能是数据库出了问题,或者它只是限制了您的脚本的主机
作为旁注,如果您希望从您的 PHP 代码中获得一个数组,您也可以设置$data = []为默认值,这样如果没有返回任何内容,您将不需要在 JS 代码中编辑内容,例如检查结果是否实际上是一个数组等等...
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报