从mysql获取数据然后通过JSON显示

时间:2013-08-21 14:43:00

标签: php jquery json

我想从mysql获取数据,并通过json_encode回显它。然后我的JQUERY将通过JSON抓取$.getJSON,并将结果附加到我的<ul>

我试图找出为什么JQUERY捕获的数据不会在我的index.php上打印

这是我的index.php

<html>
<?php 

    include_once('connect.php');

    $sql    = "SELECT * FROM data";
    $query  = mysql_query($sql);
    $result = array(); 


    while($row = mysql_fetch_array($query))  
        array_push($result,                  
            array(                          
            'name' => $row[1],              
            'msg' => $row[2]));

    echo json_encode(array("key" => $result));      
?>

<body>

<ul>
    //insert fetch data here
</ul>



<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/custom.js"></script>
</body>
</html>

这是我的JQUERY

function my_function() {
     $.getJSON("index.php", function(data) {
       $.each(data.key, function(){
       $("ul").append("<li>Name: "+this['name']+"</li>"
                      "<li>message: "+this['msg']+ "</li>");
       });
 });
}

2 个答案:

答案 0 :(得分:0)

首先:自行检查index.php输出,看看它是否显示有效的json。 ¿是否有无效的UTF8字符?在这种情况下,json_encode的输出为空。

第二次:我使用普通的ajax方法将json作为dataType:

jQuery.ajax({
       url: 'index.php',
       dataType: 'json'
}).done(function(data) {
    for (i=1;i<data.length;i++) {
        datarow=data[i];
            $("ul").append("<li>Name: "+datarow.name+"</li>");
            $("ul").append("<li>message: "+datarow.msg+ "</li>");
        }

       });

第三:不要使用相同的脚本来生成json并显示它,如果你在前面完成所有操作,那么将视图与app分离是没有意义的。在这种情况下,您可以使用普通的PHP来生成所有内容,如前面的答案所述。 (@Abdoul Sy)

答案 1 :(得分:0)

当您在同一页面上回显JSON时,您无需通过JSON获取数据。 你可以这样做:

<ul id="jsonData" data-json-data="<?php echo json_encode($result;)?>"

在你的js文件中:

var myData = $('#jsonData').data('json-data');