为了账号安全,请及时绑定邮箱和手机立即绑定

自动刷新 PHP 功能,无需重新加载页面 Javascript / Ajax

自动刷新 PHP 功能,无需重新加载页面 Javascript / Ajax

慕神8447489 2023-11-02 22:30:05
是否可以使用 Ajax、Jquery 或 Javascript 调用特定的 PHP 函数并每 10 秒刷新/重新加载它,例如在特定的 Div 或区域内?连接.phpfunction TerminalStatus ($IPAddress, $portStatus ) // Responsible for current terminal status{    $connectStatus = fsockopen($IPAddress, $portStatus, $errno, $errstr, 10); // Build cconnection to Terminal socket 25001    if (!$connectStatus) {        echo "$errstr ($errno)<br />\n";    } else {       $Status =  fgets($connectStatus) ;        echo $Status ();    }}这个连接只是为了查看终端的当前状态。我想在我的index.php 底部看到这个函数的状态,而不需要刷新整个页面。我可以通过将此函数放入其自己的 PHP 文件 (status.php) 中并按以下方式使用 Javascript 来实现此目的:<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script><script type="text/javascript">    var auto_refresh = setInterval(        function ()        {            $('#Status').load('status.php');        }, 1000); // refresh every 1000 milliseconds</script>但我只想利用该功能。这可能吗?
查看完整描述

4 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您已经拥有的解决方案是执行此操作的正确方法:JavaScript 获取 URL,并且该 URL 呈现适当的内容片段。

重要的是要记住,就 Web 浏览器而言,PHP 并不存在。来自浏览器的任何请求 - 无论您是否输入 URL、点击链接、提交表单、发出 AJAX 请求等 - 只是针对特定 URL 向某个远程服务器发送的消息,可能还包含一些额外的标头和身体数据。当服务器收到该请求时,它可以执行任何操作来生成对浏览器的响应。

因此,当您编写时$('#Status').load('status.php');,浏览器正在向服务器发送请求,而服务器恰好被配置为执行 PHP 脚本status.php。然后,您可以在 PHP 中执行您喜欢的操作来生成响应,但请求和 PHP 函数之间没有直接链接

然而,正如其他人指出的那样,您不必为您想要的每一个行为创建一个新的 PHP 文件,因为在 PHP 代码中您可以检查以下内容:

  • 查询字符串参数,在$_GET

  • 提交的表单数据,在$_POST

  • 请求中的 HTTP 标头

这些可以通过您的 JavaScript 代码设置为您喜欢的任何内容,因此您可以编写如下代码$('#Status').load('index.php?view=statusonly');,然后在顶部index.php添加如下代码:

if ( $_GET['view'] === 'statusonly'] ) {
    echo get_status();
        exit;
}

如何安排这完全取决于你,这就是编程的意义 🙂


查看完整回答
反对 回复 2023-11-02
?
慕斯王

TA贡献1864条经验 获得超2个赞

我不确定我是否理解这个问题,但你可以使用 AJAX 来执行特定的功能。像这样的东西:


首先构建你的ajax:


$.ajax({ 

  type: "POST",

  url: "URL_TO_PHP_FILE",  

  data: "refreshStatus", // this will call the function      

  success: function(status){          

    $('#Status').text(status); // this will load the info you echo

  },

});

由于您想每秒执行一次 - 用间隔包装整个事情(我使用问题中的代码):


var auto_refresh = setInterval( function () {

    $.ajax({ 

      type: "POST",

      url: "URL_TO_PHP_FILE",  

      data: "refreshStatus",

      success: function(status){          

        $('#Status').text(status); 

      },

    });

}, 1000); 

然后,在 PHP_FILE 上添加条件,以便在 POST 完成时执行特定函数:


if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST['refreshStatus']) {

    // run this code 

}

这就是你想要实现的目标吗?


查看完整回答
反对 回复 2023-11-02
?
SMILET

TA贡献1796条经验 获得超4个赞

jQuery::load()支持片段标识符。所以你可以只加载你想要替换的部分:

$( "#Status" ).load( "status.php #PartId" );

这将加载脚本的 HTML 输出并提取该部分。PHP 脚本将完全运行 - 其余的 HTML 输出将在 JS 端被丢弃。


查看完整回答
反对 回复 2023-11-02
?
LEATH

TA贡献1936条经验 获得超6个赞

仅使用 PHP 函数是不可能完成此操作的。

您应该像使用 JavaScript 一样使用 JavaScript,或者使用 JavaScript 中的套接字来连接您的 status.php 并进行更新,而无需刷新整个页面。


查看完整回答
反对 回复 2023-11-02
  • 4 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信