4 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
您已經(jīng)擁有的解決方案是執(zhí)行此操作的正確方法:JavaScript 獲取 URL,并且該 URL 呈現(xiàn)適當(dāng)?shù)膬?nèi)容片段。
重要的是要記住,就 Web 瀏覽器而言,PHP 并不存在。來自瀏覽器的任何請(qǐng)求 - 無論您是否輸入 URL、點(diǎn)擊鏈接、提交表單、發(fā)出 AJAX 請(qǐng)求等 - 只是針對(duì)特定 URL 向某個(gè)遠(yuǎn)程服務(wù)器發(fā)送的消息,可能還包含一些額外的標(biāo)頭和身體數(shù)據(jù)。當(dāng)服務(wù)器收到該請(qǐng)求時(shí),它可以執(zhí)行任何操作來生成對(duì)瀏覽器的響應(yīng)。
因此,當(dāng)您編寫時(shí)$('#Status').load('status.php');
,瀏覽器正在向服務(wù)器發(fā)送請(qǐng)求,而服務(wù)器恰好被配置為執(zhí)行 PHP 腳本status.php
。然后,您可以在 PHP 中執(zhí)行您喜歡的操作來生成響應(yīng),但請(qǐng)求和 PHP 函數(shù)之間沒有直接鏈接。
然而,正如其他人指出的那樣,您不必為您想要的每一個(gè)行為創(chuàng)建一個(gè)新的 PHP 文件,因?yàn)?strong>在 PHP 代碼中您可以檢查以下內(nèi)容:
查詢字符串參數(shù),在
$_GET
提交的表單數(shù)據(jù),在
$_POST
請(qǐng)求中的 HTTP 標(biāo)頭
這些可以通過您的 JavaScript 代碼設(shè)置為您喜歡的任何內(nèi)容,因此您可以編寫如下代碼$('#Status').load('index.php?view=statusonly');
,然后在頂部index.php
添加如下代碼:
if ( $_GET['view'] === 'statusonly'] ) { echo get_status(); exit; }
如何安排這完全取決于你,這就是編程的意義 ??

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
我不確定我是否理解這個(gè)問題,但你可以使用 AJAX 來執(zhí)行特定的功能。像這樣的東西:
首先構(gòu)建你的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
},
});
由于您想每秒執(zhí)行一次 - 用間隔包裝整個(gè)事情(我使用問題中的代碼):
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 完成時(shí)執(zhí)行特定函數(shù):
if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST['refreshStatus']) {
// run this code
}
這就是你想要實(shí)現(xiàn)的目標(biāo)嗎?

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
jQuery::load()支持片段標(biāo)識(shí)符。所以你可以只加載你想要替換的部分:
$(?"#Status"?).load(?"status.php?#PartId"?);
這將加載腳本的 HTML 輸出并提取該部分。PHP 腳本將完全運(yùn)行 - 其余的 HTML 輸出將在 JS 端被丟棄。

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
僅使用 PHP 函數(shù)是不可能完成此操作的。
您應(yīng)該像使用 JavaScript 一樣使用 JavaScript,或者使用 JavaScript 中的套接字來連接您的 status.php 并進(jìn)行更新,而無需刷新整個(gè)頁面。
添加回答
舉報(bào)