2012-05-11 164 views
2

我有一個存儲數據(如用戶名)的mysql數據庫。我有一個名爲result的PHP文件,它從數據庫中檢索結果並將它們編碼爲JSON字符串。然後,我希望相同的PHP文件輸出結果,而無需重新加載頁面(通過ajax)。有效地我想在同一個頁面,以獲得JSON字符串作爲一個HTTP請求,我怎麼去這個如何從HTTP GET請求獲取JSON字符串

這是results.php到目前爲止

  <?php 

     $link = mysql_connect('', '', ''); 
     if (!$link) { 
      die('Could not connect: ' . mysql_error()); 
     } 

     $db_selected = mysql_select_db('test', $link); 
     if (!$db_selected) { 
      die ('Can\'t use test : ' . mysql_error()); 
     } 

     $result = mysql_query("SELECT user_name FROM users"); 
     if (!$result) { 
      die('Invalid query: ' . mysql_error()); 
     } 


     $names = array(); 

     while ($row = mysql_fetch_assoc($result)) { 

      foreach ($row as $key => $val) { 

       $names[][$key] = $val; 
      } 
     } 

     if ($_GET['myvar'] == "done") 
     { 
      $ennames = json_encode($names); 
      echo $ennames; 
      exit(); 
     } 




     ?> 
     <script src="jquery-1.7.1.min.js"> 

     function getJSON() 
     { 
      $.getJSON("results.php", { myvar: "done" }, function(data) { 
       var namesHTML = ""; 

       $.each(data, function(key, val) { 
        namesHTML = namesHTML + val + "<br/>"; 
       }); 

       $("#divForNames").html(namesHTML); 
      }); 
      setTimeOut(getJSON, 5000); //the 5000 here means 5 seconds 
     } 
     </script> 

     <div id="divForNames"> 

     </div> 

回答

2

,你的PHP將需要爲這個唯一的調整是增加一個if語句的$ennames分配後立即:

if ($_GET['myvar'] == "specific-value-that-you-choose") 
{ 
    echo $ennames; 
    exit(); 
} 

對於投票,你需要做一些客戶端腳本的 - 最有可能的JavaScript和最容易寫的jQuery的。查看.getJSON() jQuery函數和setTimeOut()來創建執行此輪詢的邏輯。它可能會是這個樣子:

function getJSON() 
{ 
    $.getJSON("result.php", { myvar: "specific-value-that-you-choose" }, function(data) { 
     var namesHTML = ""; 

     $.each(data, function(key, val) { 
      namesHTML = namesHTML + val + "<br/>"; 
     }); 

     $("#divForNames").html(namesHTML); 
    }); 
    setTimeOut(getJSON, 5000); //the 5000 here means 5 seconds 
} 

然後某處HTML對於非JSON頁面,則需要包括與設置爲匹配您的$.getJSON()函數內部使用的一個ID的<div>(在此例如,我需要一個空的<div id="divForNames">,但您可以更改名稱以適合您的偏好

+0

什麼是myvar所有關於?我會在那個變量中通過什麼? –

+0

myvar只是一個變量,您可以用它來通過數據到php頁面,你可以用它來調整輸出中給出的結果,如果你沒有什麼需要通過的話,就選擇一些值來表示你想渲染JSON。廣告的HTML。因此,而不是'myvar',你可以使用'renderMethod'而不是'specific-value-that-you-choose「,你可以使用」JSON「 –

+0

我將編輯我的問題以更好地解釋我想要達到的目標 –