如何使用JSON从MySQL检索信息?

时间:2014-08-31 09:13:56

标签: php json

我正在练习使用JSON,但似乎没有检索到预期的信息。

该页面直接在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,姓名,性别,位置的数据库用户

1 个答案:

答案 0 :(得分:0)

您的JSON上有一个尾随<p style="text-align: justify;">,它会使其无效,因此无法解析。

删除它。


您应该检查从PHP返回的数据(通过浏览器的开发人员工具Net选项访问它或直接访问URL)。然后,您可以使用JSON Lint等工具测试JSON。


默认情况下,PHP会声称它输出的任何内容都是HTML。虽然使用getJSON会告诉jQuery忽略它并将其解析为JSON,但最佳做法是包含header("Content-Type: application/json");

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