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條經驗 獲得超7個贊
僅使用 PHP 函數是不可能完成此操作的。
您應該像使用 JavaScript 一樣使用 JavaScript,或者使用 JavaScript 中的套接字來連接您的 status.php 并進行更新,而無需刷新整個頁面。
添加回答
舉報