2017-05-05 127 views
1

我在我的代碼中有這個文本框,每當這個頁面被加載/刷新時,它的內容都充滿了查詢結果。但由於手動刷新不是我的選擇,我怎麼能自動做到這一點(我只想刷新文本框)?我已經閱讀過有關使用AJAX的內容,並且我一直在閱讀它,但說實話,我不太懂得如何使它工作,有人可以解釋我並將它貶低嗎?有沒有更簡單的方法來刷新查詢內容的文本框?用mysql查詢每隔幾秒刷新一次文本框?

編輯:好的,我想我理解AJAX的基礎知識,現在功能每秒都在刷新文本框,但存在一個小問題。這讓我大吃一驚。我修改了HTML代碼,希望有人能告訴我我做錯了什麼。我在想我不應該在桌子裏包括一個div? Here's我的表怎麼看起來和how it looks like這個小更新

<?php 
include '../Login/db_login.php'; 
session_start(); 
$sql = "SELECT Contador FROM senhas2 WHERE ID=1"; 
$result = $conn->query($sql); 
$row = $result->fetch_assoc(); 
$nome = $row['Contador'] 
?> 
<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Página de administração - A</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
     <script> 
      setInterval(function(){ 
      $('#refreshtb').load('bt1admin.php'); 
      }, 1000) 
     </script> 
</head> 

<body> 
    <form action="" id="atender" method="POST"> 
    <table border="1"> 
    <tr> 
     <td>Clientes em espera:</td> 
     <td><div id="refreshtb"><input id="refreshtb" type="text" value="<?php echo "$nome";?>"readonly></div></td> 
    </tr> 
    <tr> 
     <td>Selecionar posto de atendimento:</td> 
     <td><select name="posto"><option value="n1" selected>1</option><option value="n2">2</option><option value="n3">3</option><option value="n4">4</option><option value="n5">5</option><option value="n6">6</option></select> 
    </tr> 
    <tr> 
     <td colspan="2"><input type="submit" form="atender" name="atender" value="Atender Cliente Seguinte"></td> 
    </tr> 
    </table> 
    </form> 
</body> 
</html> 
+0

你說得對,使用AJAX,並用'setInterval()'每隔X秒運行一次' – Qirel

回答

1

後,您不能更改使用PHP頁面的內容。您需要使用前端語言,例如Javascript。即使在加載後,Javascript仍能夠更改頁面的內容。爲了每X秒更新一次您的頁面內容,您需要使用Javascript的setInterval()函數每X秒運行一次函數。該功能將使用AJAX向您的網站發送請求並收集更多數據,然後更新您的文本框以包含這些新數據。您可能會發現這個問題#1有用:How does AJAX work?

編輯:爲了澄清一些混亂,我們的意見的討論和響應您的編輯,我已經修改了你的代碼一點點。試試這個:

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Página de administração - A</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
     <script> 
      setInterval(function(){ 
       $.ajax('bt1admin.php').done(function(data) { 
        $("#refreshtb").val(data); 
       }) 
      }, 1000); 
     </script> 
</head> 

<body> 
    <form action="" id="atender" method="POST"> 
    <table border="1"> 
    <tr> 
     <td>Clientes em espera:</td> 
     <td><div><input id="refreshtb" type="text" value="<?php echo "$nome";?>"readonly></div></td> 
    </tr> 
    <tr> 
     <td>Selecionar posto de atendimento:</td> 
     <td><select name="posto"><option value="n1" selected>1</option><option value="n2">2</option><option value="n3">3</option><option value="n4">4</option><option value="n5">5</option><option value="n6">6</option></select> 
    </tr> 
    <tr> 
     <td colspan="2"><input type="submit" form="atender" name="atender" value="Atender Cliente Seguinte"></td> 
    </tr> 
    </table> 
    </form> 
</body> 
</html> 

我做了什麼:

所有的
  • 首先,你必須複製#refreshtb元素,所以我刪除其中的一個。
  • 您還在JQuery中使用​​方法。這不會更新HTML輸入的。相反,它只是取代了孩子的HTML,這不是你想要的。我更新了腳本,現在更新#refreshtb輸入元素的值。

經過測試,它似乎對我很好。如果您在此之後還是出現奇怪的表問題,或者由於某種原因該字段沒有正確更新,我懷疑這是您的bt1admin.php頁面的問題。確保頁面不輸出整個表格,而是只是您想要進入文本框的值。

+0

我想我現在很瞭解AJAX的工作原理,儘管對我來說還是有點困惑。該文本框現在刷新自己,但我的表得到了一些混亂。我已將詳細信息添加到原始帖子 –

+0

您能比「搞砸」更具體嗎? – bugfroggy

+0

基本上它創建了一個我已經存在的文本框的表格的副本。我已將所有細節添加到原始文章中,包括對html的更改。我假設問題是由於div的放置,但我不確定。 –