【问题标题】:Parsing JSON with jQuery使用 jQuery 解析 JSON
【发布时间】:2011-02-19 17:51:14
【问题描述】:

我有一些这样的 json 结构

({
"items" : [
{
  "color" : "B83D7A",
  "name" : "example"
}
]})

剩下的代码是

<script type="text/javascript">
$.getJSON("favourites.json", function (data) {
    var htmlString = "";
    $.each(data.items, function (i, item) {
        var url = "http://" + item.name + ".com";
        var color = item.color;
        htmlString += '<a href="' + url + '" target="_blank">';
        htmlString += '<p style="color: #' + color + ';">';
        htmlString += item.name;
        htmlString += '</p></a>';
    });
    $('#favourites').html(htmlString);
});
</script>
<div id="favourites"></div>

我没有收到任何错误,但什么也没发生,
请帮忙,因为我不知道出了什么问题。
谢谢你:)

【问题讨论】:

  • 是实际代码中的尾随逗号,还是只是一个错字?
  • 您是否尝试过使用 Firebug 或类似工具在您的 JS 块上设置断点并查看您返回的值以及它可能失败的位置?
  • 另外,如果你把它改成这样会发生什么:$.getJSON('favourites.json', function (data) { alert(data); });
  • 你的“favourites.json”和上面代码的html页面在同一个地方吗?
  • 无法在 firefox 4.0 上得到它,但在 chrome 检查上我什么也没得到

标签: jquery json parsing


【解决方案1】:

您的 json 无效,您有一个尾随逗号,并且您使用的是 (),而它应该是 []

试试这个:

[{
"items" : [
{
  "color" : "B83D7A",
  "name" : "example"
}
]}]

【讨论】:

  • 请记住,如果您将 JSON 更改为包含在数组中,则需要从数组的第一个成员访问 itemsdata[0].items 而不是 data.items
  • 仍然无法正常工作,并且没有任何控制台错误。我可能会放弃并尝试附加数据
【解决方案2】:

尝试将版本更改为 jQuery 1.3。由于某种原因,它不适用于 jQuery 1.4。

Edit1:正如@Dave 在 cmets 中指出的那样,它是一个 json 语法问题 多余的逗号和大括号不正确。 使用下面的 json 就可以了。

{
"items" : [
{
  "color" : "B83D7A",
  "name" : "example"
}
]}

【讨论】:

  • 它在 jQuery 1.4 中不起作用的原因是 1.4 在可用时使用JSON.parse()(这样更快更安全),而JSON.parse() 将无法成功解析无效的 JSON。如果可能的话,修复 JSON 而不是恢复到两年前的 jQuery 版本。避免使用 1.4 或 1.5,您会错过很多错误修复和性能改进。此时,您甚至会发现不适用于 1.3 的插件。
  • 1.3 和 1.4 版是什么?如果你指的是 jQuery,那么最新版本是 1.5。
  • 这就像尝试提交用法语写的英语课堂论文,并在获得 F 时要求新老师。OP 的输入不是JSON,切换到损坏的解析器掩盖了问题,它不能解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
  • 2013-02-12
  • 2013-06-26
  • 2013-08-08
  • 2011-06-03
  • 1970-01-01
相关资源
最近更新 更多