亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自動刷新 PHP 功能,無需重新加載頁面 Javascript / Ajax

自動刷新 PHP 功能,無需重新加載頁面 Javascript / Ajax

慕神8447489 2023-11-02 22:30:05
是否可以使用 Ajax、Jquery 或 Javascript 調用特定的 PHP 函數并每 10 秒刷新/重新加載它,例如在特定的 Div 或區域內?連接.phpfunction 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 底部看到這個函數的狀態,而不需要刷新整個頁面。我可以通過將此函數放入其自己的 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>但我只想利用該功能。這可能嗎?
查看完整描述

4 回答

?
MM們

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;
}

如何安排這完全取決于你,這就是編程的意義 ??


查看完整回答
反對 回復 2023-11-02
?
慕斯王

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 

}

這就是你想要實現的目標嗎?


查看完整回答
反對 回復 2023-11-02
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

jQuery::load()支持片段標識符。所以你可以只加載你想要替換的部分:

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

這將加載腳本的 HTML 輸出并提取該部分。PHP 腳本將完全運行 - 其余的 HTML 輸出將在 JS 端被丟棄。


查看完整回答
反對 回復 2023-11-02
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

僅使用 PHP 函數是不可能完成此操作的。

您應該像使用 JavaScript 一樣使用 JavaScript,或者使用 JavaScript 中的套接字來連接您的 status.php 并進行更新,而無需刷新整個頁面。


查看完整回答
反對 回復 2023-11-02
  • 4 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號