[英]Display data from php script in a table using ajax
我希望通过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);
遍历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)
},
感谢大家的帮助。 我最终能够找出问题所在。
最后,现在我需要以表格式显示数据并经常更新表。 我仍在与之合作,但这就是我现在想要的:
$(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 }) })();
});
我真的不明白为什么这么难做到。 我确信这是一个常见的情况,并且我真的希望有一种更直接的方法。 希望我的最终代码可以避免其他人浪费大量时间。 祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.