[英]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
这些可以通过您的 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.