4 回答
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; }
如何安排这完全取决于你,这就是编程的意义 🙂
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
}
这就是你想要实现的目标吗?
TA贡献1796条经验 获得超4个赞
jQuery::load()支持片段标识符。所以你可以只加载你想要替换的部分:
$( "#Status" ).load( "status.php #PartId" );
这将加载脚本的 HTML 输出并提取该部分。PHP 脚本将完全运行 - 其余的 HTML 输出将在 JS 端被丢弃。
TA贡献1936条经验 获得超6个赞
仅使用 PHP 函数是不可能完成此操作的。
您应该像使用 JavaScript 一样使用 JavaScript,或者使用 JavaScript 中的套接字来连接您的 status.php 并进行更新,而无需刷新整个页面。
添加回答
举报