0

我尝试使用 jQuery 在 html 文件中显示 JSON 数据。

但是在html中我什null至没有任何输出unindefied

我尝试使用来自 Flickr 的外部 JSON 数据,我至少看到了[Object]

我也尝试在本地服务器上测试这两个文件 - HTML 和 JSON - 再次没有

我在我的服务器上为 application/json 添加 MIME 类型

我检查了 JSON-它是有效的

在 Firebug 我看到 JSON 响应(见下图)

如果重要的话,我在同一页面上使用 jQuery mobile 和 DW Fluid 网格布局。

我的 JSON 是用 PHP json_encode 生成的:

({ "title": "Art and Culture",
"items": [
{"id":"kunst-im-tunnel","lat":"51.219917"},
{"id":"kunsthalle","lat":"51.227568"},
{"id":"kunstsammlung-nordrhein-westfalen","lat":"51.22841"}]
})

JSON 的 PHP 代码

<?php
header('Cache-Control: no-store, no-cache, must-revalidate, private, post-check=0, pre-check=0');
header('Pragma: no-cache'); 
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json; charset=utf-8');
$out = json_encode($post);
echo "({ \"title\": \"Art and Culture\",\"items\": " .$out." })";
?> 

我的 JavaScript 代码是:

$.getJSON("http://example.com/app.php?cat=category&jsoncallback=?",
{format: "json"},
function(data){
    $.each(data.items, function(i,item){

        $('<li>' +  item.id + '</li>').appendTo("#list");

    });

});

萤火虫截图: Firebug 净结果

4

2 回答 2

2
({ "title": "Art and Culture",
"items": [
{"id":"kunst-im-tunnel","lat":"51.219917"},
{"id":"kunsthalle","lat":"51.227568"},
{"id":"kunstsammlung-nordrhein-westfalen","lat":"51.22841"}]
})

不是有效的 JSON。

但是这个是 Valid JSON

 { "title": "Art and Culture",
   "items": [
              {"id":"kunst-im-tunnel","lat":"51.219917"},
              {"id":"kunsthalle","lat":"51.227568"},
              {"id":"kunstsammlung-nordrhein-westfalen","lat":"51.22841"}]
 }

它会很好地工作。这是工作示例http://jsfiddle.net/cqfQp/1/

使用jsonlint验证 JSON。

另一个建议是,尽量避免append在循环中调用函数。创建一个变量并只调用一次函数。像这样的东西

     var strItems="";
     $.each(data.items, function(i,item){
         strItems+='<li>' +  item.id + '</li>';
     });
     $("#list").html(strItems); 

编辑:确保在文档就绪函数 上调用 getJSON

 $(function(){
      $.getJSON("http://example.com/app.php?cat=category&jsoncallback=?",function(data){
        var strItems="";
        $.each(data.items, function(i,item){
            strItems+='<li>' +  item.id + '</li>';
        });
        $("#list").html(strItems);    
     });
 });
于 2012-06-06T12:29:27.910 回答
0

您正在生成无效的 JSON — 包含整个 JSON 表达式的括号不应该在那里。

于 2012-06-06T12:26:20.657 回答