首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查数据库中的更改,然后重新加载页面

检查数据库中的更改,然后重新加载页面
EN

Stack Overflow用户
提问于 2017-10-22 21:19:33
回答 4查看 1K关注 0票数 2

我正在开发一个脚本,我需要它来检查DB中的更改。

每次执行edit.php时,它都会生成一个时间戳并将其保存在DB中。如果在DB中保存了较新的时间戳,则需要刷新edit.php页面。

因此,我创建了一个页面,该页面显示保存在DB (checkupdates.php)上的当前时间戳,并使JS脚本检查页面并比较时间戳。如果DB one较新,则需要刷新页面。

我没有javascript的概念,到目前为止,我的页面没有对当前脚本的响应。

到目前为止,我得到的是:

edit.php

代码语言:javascript
运行
复制
<?php 
$date = new DateTime();
$utime = $date->getTimestamp(); //GET TIMESTAMP ON PAGE LOAD

updatetimestampondb($id, $utime); //UPDATE DB WITH CURRENT TIMESTAMP
?>


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<script type="text/javascript">

var updatetime = "<?php echo $utime; ?>"; //The timestamp saved in the DB when the page is executed

function checkUpdate() {
    $.ajax({
      url: 'checkupdates.php?id=$id',
      timeout: 2000,
      success: function(data) {
        if (currentTS < updatetime) {
            alert('The page will be reaload');
            location.reload();
        }
    });
}

setInterval(checkUpdate, 5000);

</script>

checkupdates.php

代码语言:javascript
运行
复制
<?php
(...) //Check DB Script for actual timestamp saved
echo "<script>var currentTS = ".$sheet->utime.";</script>";
(...)
?>

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-10-22 21:34:35

最好是在ajax中发送json响应,因为js代码将不能正常工作,请尝试以下操作:

代码语言:javascript
运行
复制
 $response = ["currentTS" => $sheet->utime];
 echo  json_encode($response); 

然后编写ajax,如下所示(如果$id是一个php,那么将它写为<?=$id?>):

代码语言:javascript
运行
复制
function checkUpdate() {
    $.ajax({
      url: 'checkupdates.php?id=$id',
      timeout: 2000,
      dataType: 'json',
      success: function(data) {
        if (data.currentTS < updatetime) {
            alert('The page will be reaload');
            location.reload();
        }
    });
票数 2
EN

Stack Overflow用户

发布于 2017-10-22 21:22:53

代码语言:javascript
运行
复制
echo "<script>var currentTS = ".$sheet->utime.";</script>";

不会在Ajax请求中工作。您需要发送回JSON:

代码语言:javascript
运行
复制
echo  '{"currentTS" : "'.$sheet->utime.'"}'; 

然后在AJAX成功中添加dataType: 'json'

代码语言:javascript
运行
复制
data.currentTS < updatetime

以上将解决您的问题与数据回来。然而,我想知道为什么这么详细。您就不能每隔5秒向服务器发出请求,然后动态更新页面上的组件吗?

票数 1
EN

Stack Overflow用户

发布于 2017-10-22 21:30:59

不能通过AJAX直接在HTML脚本中回显javascript。你能做的是以下几点。

checkupdates.php

代码语言:javascript
运行
复制
<?php 
   // ...
   echo $sheet->utime;

然后,不要使用变量data,而是使用变量currentTS

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46879278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档