【发布时间】:2020-01-06 18:36:21
【问题描述】:
如果使用 Ajax 和 PHP 的数据库中的 orderStatus 发生变化,我正在尝试刷新我的页面。我将当前 orderStatus 设置为预定义数据,然后使用 Ajax 从数据库中获取当前 orderStatus,最后比较它们是否不相同。如果它们不一样,我想刷新页面。
PHP (autorefresh.php)
<?php
$orderId = $_POST["orderId"];
$query = "SELECT * FROM orderinhomeonlinecall WHERE orderId='$orderId'";
$result = mysqli_query($db, $query);
while($row = mysqli_fetch_array($result))
{
$orderStatus = $row['orderStatus'];
$data = array(
'orderStatus' => $orderStatus
);
echo json_encode($data);
}
?>
Javascript
<script type="text/javascript" >
var predefined_val = '<?php echo $orderStatus; ?>';// your predefined value.
$.document(ready(function(){
setInterval(function(){
$.ajax({
type:"POST",
url:"autorefresh.php", //put relative url here, script which will return php
data:{orderId: <?php echo $orderId; ?>}, // if any you would like to post any data
success:function(response){
var data = response; // response data from your php script
if(predefined_val !== data){
window.location.href=window.location.href;
}
}
});
},5000);// function will run every 5 seconds
}));
【问题讨论】:
-
对数据库的更改不能触发对页面的更改。您必须定期使用 AJAX 查询数据库,以将当前状态与新状态进行比较以进行更改。
-
您对 SQL 注入持开放态度。您应该参数化您的查询。
-
我会写一些 AJAX 并让它每 5 秒左右运行一次以获取更新。
-
使用 websockets 而不是轮询。后者是一种反模式,因为它根本无法扩展。
-
谢谢大家,user3783243 和 Dharman,我稍后会处理 SQL 注入方面的问题。
标签: javascript php jquery mysql ajax