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

自动刷新PHP函数,无需重新加载页面Javascript/Ajax,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,是否可以使用Ajax、Jquery或Javascript调用特定的PHP函数,并每10秒刷新/重新加载一次,例如在特定的Div或区域内 Connection.php function TerminalStatus ($IPAddress, $portStatus ) // Responsible for current terminal status { $connectStatus = fsockopen($IPAddress, $portStatus, $errno, $errstr

是否可以使用Ajax、Jquery或Javascript调用特定的PHP函数,并每10秒刷新/重新加载一次,例如在特定的Div或区域内

Connection.php

function 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 ();
    }
}
函数TerminalStatus($IPAddress,$portStatus)//负责当前终端状态
{
$connectStatus=fsockopen($IPAddress,$portStatus,$errno,$errstr,10);//构建到终端套接字25001的cconnection
如果(!$connectStatus){
回显“$errstr($errno)
\n”; }否则{ $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>

var auto_refresh=setInterval(
函数()
{
$('#Status').load('Status.php');
}, 1000); // 每1000毫秒刷新一次
但我只是想利用这个功能。
这可能吗?

仅使用PHP函数不可能执行此操作

您应该在使用javascript时使用它,或者使用javascript中的套接字连接status.php并在不刷新整个页面的情况下进行更新。

支持片段标识符。因此,您可以只加载要替换的零件:

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

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

我不确定是否理解这个问题,但您可以使用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
  },
});
因为你想每秒钟做一次,所以用interval包装整个过程(我使用问题中的代码):

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

if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST['refreshStatus']) {
    // run this code 
}

这就是您的目标吗?

您已有的解决方案是正确的方法:JavaScript获取URL,该URL呈现适当的内容

重要的是要记住,就web浏览器而言,PHP并不存在。来自浏览器的任何请求——无论您是否键入URL、跟踪链接、提交表单、发出AJAX请求等等——都只是发送给某个远程服务器的特定URL的消息,可能还有一些额外的标题和正文数据。当服务器接收到该请求时,它可以做任何它喜欢做的事情来生成对浏览器的响应

因此,当您编写
$('#Status').load('Status.php')
,浏览器正在向服务器发送一个请求,而服务器恰好被配置为执行PHP脚本
status.PHP
。然后,您可以在PHP中随心所欲地生成响应,但是请求和PHP函数之间没有直接的联系

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

  • 查询字符串参数,在
    $\u GET
  • 提交的表单数据,在
    $\u POST
  • 请求中的HTTP头
这些可以由JavaScript代码设置为您喜欢的任何值,因此您可以编写
$('#Status').load('index.php?view=statusonly')
然后在
index.php
的顶部有如下代码:

if($\u GET['view']=='statusonly'])){
echo获取_状态();
出口
}

如何安排这一切完全取决于您,这就是编程的全部内容。没有办法直接从Javascript调用PHP,因为PHP是服务器端代码!他需要由服务器(Apache/Nginx)进行解释。编辑:这就是为什么如果你喜欢你的php文件,你需要每10秒进行一次AJAX调用。接受数据参数。为什么不传递一个参数,并在PHP中检查它呢。如果参数存在(或具有特定值),则执行该函数,否则仅对整个页面进行响应。值得注意的是,对于那些熟悉相关概念的新手来说,这仍然会获取整个页面,因此会运行整个PHP脚本,然后扔掉所有与最后的选择器不匹配的东西。很好。补充说。
if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST['refreshStatus']) {
    // run this code 
}