如何在收到jquery的帖子后引用php页面

How to referesh a php page after reception of post from jquery

本文关键字:引用 php 页面 jquery      更新时间:2023-09-26

我使用jquery将客户端机器上的本地时间发布到服务器。除了通过php显示本地时间外,我还将其保存在服务器端的数据库中。为了正确显示客户端的时间,我需要在收到jquery的帖子后刷新php页面。我该怎么做?这是代码。我尝试使用标头("刷新:0"),但没有成功。

<script type="text/javascript">
  $(function(){
    var d = new Date();
    var dateStr = d.toString()
    $.post(window.location, {
        dateStr: dateStr
    }).success(function(data){
        var res = $(data).filter('#divMessage').text();
        alert(res);
    });
});
</script>
<div id="divMessage">
<?php 
    $v2 = 'nothing!';
    if(isset($_POST["dateStr"]) && strlen(trim($_POST["dateStr"])) > 0)
    {
        $dstr = $_POST["dateStr"];
        $v2 = 'current date/time is '.$dstr;
        echo "<span style='"color:green'">$v2</span>";
        // I need to refresh the page here!
        //header("Refresh:0");
    }
    echo "<span style='"color:green'">$v2</span>";
?> 
</div>

您的方案:

  1. Javascript读取客户端的时间
  2. 使用AJAX将客户端的时间发送到服务器
  3. 从服务器接收包含客户端时间的响应
  4. 在页面上显示该响应

为什么?如果您想显示客户端的时间,为什么需要涉及服务器。

除了通过php显示本地时间外,我还会保存它在服务器端的数据库中

我也很好奇为什么你想在数据库中节省客户的时间,但假设你有充分的理由,就这样做吧:

  1. Javascript读取客户端的时间
  2. Javascript在页面上显示客户端的时间
  3. 使用AJAX将时间发送到服务器
  4. 服务器将其保存在数据库中

不需要处理来自服务器的响应数据。客户端已经拥有该信息。

我尝试使用标头("刷新:0"),但没有成功。

它在您尝试的地方不起作用,因为您在将内容发送到浏览器后设置标题(在header()调用之前有空格、html和javascript)。如果您希望显示html的同一个php文件也能响应AJAX查询,请将所有php逻辑放在首位,在打开<?php 之前什么都不做

必须在进行任何标记之前发送标头。

来自PHP文档:

请记住,在发送任何实际输出之前,必须调用header(),无论是通过普通的HTML标记、文件中的空行还是从PHP发送。

使用JavaScript:

location.reload();

使用 // I need to refresh the page here! echo <script> location.reload(); </script>