繁体   English   中英

自动刷新 PHP Function 无需重新加载页面 Javascript / Z3EB7106C3477A60E6BBF5DBFDE1DA59

[英]Auto Refresh PHP Function without reloading page Javascript / Ajax

Is it possible to use Ajax, Jquery or Javascript to call a specific PHP Function and refresh / reload it every 10 seconds for example inside a specific Div or areas?

连接.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 ();
    }
}

这个连接只是为了查看一个终端的当前状态。 我想在我的 index.php 底部看到这个 function 的状态,而不刷新整个页面。

我可以通过将此 function 放入其自己的 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>

但我只想改用 function。 这可能吗?

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

重要的是要记住,就 web 浏览器而言, PHP 不存在 来自浏览器的任何请求 - 无论您是否输入了 URL、点击链接、提交表单、发出 AJAX 请求等 - 都只是发送给某个远程服务器的消息,用于特定的 ZE6B391A8D2C4 以及一些额外的标头 7 和 3DZA7 和 B6585902A23身体数据。 当服务器接收到该请求时,它可以做任何事情来生成对浏览器的响应。

所以当你写$('#Status').load('status.php'); ,浏览器正在向服务器发送请求,该请求恰好配置为执行 PHP 脚本status.php 然后,您可以在 PHP 中执行您喜欢的操作来生成响应 - 但是请求和 PHP function 之间没有直接联系

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

  • 查询字符串参数,在$_GET
  • 提交的表单数据,在$_POST
  • 请求中的 HTTP 标头

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

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

你如何安排这完全取决于你,这就是编程的全部内容

仅使用 PHP function 是不可能执行此操作的。

您应该使用 javascript 或使用 javascript 中的套接字来连接您的 status.php 并更新而不刷新整个页面。

jQuery::load()支持片段标识符。 因此,您可以只加载要替换的部分:

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

这将加载脚本的 HTML output 并提取该部分。 PHP 脚本将完全运行 - HTML Z78E6221F6393D1356681DB398F 一侧的 HTML 的 rest 将被丢弃。

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

首先构建您的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 完成后执行特定的 function:

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

这是你的目标吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM