我希望通过php脚本运行一些查询然后使用ajax在html页面上显示来显示数据。
我有一个php脚本,它以json格式回显sql查询中的数据。输出如下:
{"Username":"Server","RICS":12739,"Exclusive_RICS":0}{"Username":"eikon1","RICS":4,"Exclusive_RICS":0}{"Username":"balbla","RICS":552,"Exclusive_RICS":0}{"Username":"somename","RICS":221,"Exclusive_RICS":201}
我想使用$ .ajax调用显示此数据。
我做了一些研究并想出了这个:
$(document).ready(function(){
$.ajax({
url : 'query.php',
type : 'POST',
data : {
//'numberOfWords' : 10
},
dataType:'json',
success : function(data) {
window.alert(data.Username)
},
error : function(request,error)
{
alert("Request: "+JSON.stringify(request));
}
});
});
然而,它无法正常工作。我只是得到这个警报:
我是js / ajax / php的新手,请原谅我,如果我错过了一些简单的事情。
感谢任何帮助。谢谢!
编辑:
php code:
$sql = 'select * from table';
$retval = sqlsrv_query($conn,$sql);
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while( $row = sqlsrv_fetch_array( $retval, SQLSRV_FETCH_ASSOC) ) {
echo json_encode($row);
}
sqlsrv_free_stmt($retval);
//echo "Fetched data successfully\n";
sqlsrv_close($conn);
编辑2: 通过这个来管理以正确的JSON格式获取php的输出。现在只需要使用ajax显示它。
while( $row = sqlsrv_fetch_array( $retval, SQLSRV_FETCH_ASSOC) ) {
$rows[] = $row;
}
echo json_encode($rows);
答案 0 :(得分:0)
循环遍历SQL结果集并分别回显每一行会产生无效的JSON格式。相反,您应该json_decode
整个SQL结果集。
以下是如何更新PHP代码以便输出正确的格式:
php代码:
$sql = 'select * from table';
$retval = sqlsrv_query($conn,$sql);
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
echo json_encode( sqlsrv_fetch_array( $retval, SQLSRV_FETCH_ASSOC) );
sqlsrv_free_stmt($retval);
//echo "Fetched data successfully\n";
sqlsrv_close($conn);
您的AJAX success
回调可能还需要一个步骤。您必须JSON.stringify
结果,因为PHP会将其作为纯文本发回:
success : function(data) {
var result = JSON.stringify( data );
window.alert(result.Username)
},
答案 1 :(得分:0)
感谢大家的帮助。我终于弄明白了这个问题。
最后,现在我需要以表格格式显示数据 经常更新表格。我仍在努力,但这是 我现在得到的是什么:
$(document).ready(function() {
(function poll() {
$.ajax({
url : 'http://localhost/scripts/query.php',
type : 'POST',
data : {},
dataType:'json',
success : function(response) {
var json_obj = $.parseJSON(JSON.stringify(response));
var output="";
for (var i in json_obj)
{
output+="<tr>";
output+="<td>" + json_obj[i].time.date + "</td>" + "<td>" + json_obj[i].username + "</td>" + "<td>" + json_obj[i].rics + "</td>" + "<td>" + json_obj[i].exclusive_rics +"</td>";
output+="</tr>";
}
$('#table_content').html(output);
},
error : function(request,error)
{
alert("Request: "+JSON.stringify(request));
} ,
dataType: "json",
complete: setTimeout(function() {poll()}, 5000),
timeout: 2000
})
})();
});
我真的不明白为什么这么难做。我确信这是一个常见的情况,我真的希望有一种更直接的方式来做到这一点。希望我的最终代码可以避免其他人浪费他们太多的时间。祝你好运!