使用ajax在表中显示来自php脚本的数据

时间:2015-06-09 15:00:57

标签: javascript php jquery 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));
    }
});

});

然而,它无法正常工作。我只是得到这个警报:

enter image description here

我是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);

2 个答案:

答案 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)

感谢大家的帮助。我终于弄明白了这个问题。

  • 首先,正如用户指出的那样,我的json格式不对。一世 修复了我编辑中的解决方案。
  • 其次,我必须直接用精确的地址引用我的php。我认为这与从同一服务器运行查询有关。不太确定。
  • 第三,我尝试了一个简单的ajax调用,甚至失败了。事实证明我的浏览器(chrome)需要清理。我清除了我的饼干,它开始工作正常。它为什么表现得很奇怪?我不知道!
  • 最后,现在我需要以表格格式显示数据 经常更新表格。我仍在努力,但这是 我现在得到的是什么:

    $(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
        })
    })();
    

    });

我真的不明白为什么这么难做。我确信这是一个常见的情况,我真的希望有一种更直接的方式来做到这一点。希望我的最终代码可以避免其他人浪费他们太多的时间。祝你好运!