0

我想从 mysql 中获取数据,并通过json_encode. 然后我JQUERYJSON通过$.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>");
       });
 });
}
4

2 回答 2

0

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

第二:我会使用普通的ajax方法提示json作为数据类型:

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 并显示它,如果你在前面完成所有操作,将视图与应用程序解耦是没有意义的。在这种情况下,您不妨使用纯 php 来生成它,正如前面的答案所说。(@Abdoul Sy)

于 2013-08-21T14:49:39.967 回答
0

您不需要通过 JSON 获取数据,因为您在同一页面上回显 JSON。你可以这样做:

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

在你的 js 文件中:

var myData = $('#jsonData').data('json-data');
于 2013-08-21T14:50:07.080 回答