2014-08-31 51 views
-2

我正在練習使用JSON,但似乎沒有檢索到預期的信息。如何使用JSON從MySQL中檢索信息?

該頁面直接在HTML輸出中顯示來自數據庫的用戶詳細信息,使用JSON。

的getJSON

</p> 
<?php 
$mysql_db_hostname = "host"; 
$mysql_db_user = "user"; 
$mysql_db_password = "pass"; 
$mysql_db_database = "db"; 

$con = @mysqli_connect($mysql_db_hostname, $mysql_db_user, $mysql_db_password, 
$mysql_db_database); 

if (!$con) { 
trigger_error('Could not connect to MySQL: ' . mysqli_connect_error()); 
} 
$var = array(); 
$sql = "SELECT * FROM users"; 
$result = mysqli_query($con, $sql); 

while($obj = mysqli_fetch_object($result)) { 
$var[] = $obj; 
} 
echo '{"users":'.json_encode($var).'}'; 
?> 
<p style="text-align: justify;"> 

和showjson

</p> 
<table class="mGrid" id="jsondata"> 
<thead> 
<th>Id</th> 
<th>Name</th> 
<th>Age</th> 
<th>Gender</th> 
<th>Location</th> 
</thead> 
<tbody></tbody> 
</table> 
</div> 

<script type="text/javascript"> 

$(document).ready(function(){ 
var url="getjson.php"; 
$("#jsondata tbody").html(""); 
$.getJSON(url,function(data){ 
$.each(data.users, function(i,user){ 
var newRow = 
"<tr>" 
+"<td>"+user.id+"</td>" 
+"<td>"+user.name+"</td>" 
+"<td>"+user.age+"</td>" 
+"<td>"+user.gender+"</td>" 
+"<td>"+user.location+"</td>" 
+"</tr>" ; 
$(newRow).appendTo("#jsondata tbody"); 
}); 
}); 
}); 

</script> 
<p style="text-align: justify;"> 

數據庫用戶ID,姓名,性別,位置

+0

你能提供一些輸出嗎?什麼是期望值,什麼是收到價值? – 2014-08-31 09:17:55

+0

其沒有獲取數據 – mukesh 2014-08-31 09:29:49

+2

看看你的瀏覽器的開發者工具。重新加載頁面。 JavaScript控制檯說什麼?你能在Net標籤中看到你的Ajax請求嗎?它格式正確嗎?它會得到迴應嗎?答案是否正確? – Quentin 2014-08-31 09:31:49

回答

0

你有一個尾隨在你的JSON <p style="text-align: justify;">這使得它無效,所以它不會解析。

刪除它。 (無論是通過訪問它,雖然瀏覽器的開發者工具Net標籤或直接訪問URL)


你應該檢查你有從PHP回數據。然後,您可以使用JSON Lint等工具測試JSON。


默認情況下,PHP會聲稱輸出的內容是HTML。雖然你使用getJSON會告訴jQuery忽略它並將其解析爲JSON,但最佳做法是包含header("Content-Type: application/json");

最佳做法也是使用json_encode生成所有JSON,而不是用字符串連接包裝{"users":}

+0

請問你是新來的JSON你可以給我的代碼,以便它可以顯示在restclient插件中突出顯示部分 – mukesh 2014-08-31 09:53:54