【问题标题】:Handling JSON Object With jQuery?用 jQuery 处理 JSON 对象?
【发布时间】:2011-04-20 01:21:27
【问题描述】:

我在处理从 AJAX 请求返回的 JSON 对象时遇到问题。

这是一个简单的平面 JSON 对象,我要做的就是将响应写回页面。

谁能指出如何遍历这些对象并输出值?我只是不断收到[undefined][object] 的写信

代码在这里:

$.ajax({  
          type: "POST",  
          url: "func/chatResponse.php",  
          data: dataString,  
          success: function() {  
            $.getJSON('func/chatResponse.php?a=jsonLatest', function(data) {
                $.each(data, function(index) {
                    //items.push('<li id="' + key + '">' + val + '</li>');
                    $('body').append('<li id="' + data.user + '">' + data.user + '</li>');
                    alert(data);
                 });
            });
            alert("done");
          }  
        });  

此处为 JSON 示例

[
    {"user":"someguy","message":"my message","timestamp":"2011-04-19 17:26:09"},
    {"user":"Cheyne","message":"Hey There ...  Nice site","timestamp":"2011-04-19 17:26:09"}
]

【问题讨论】:

  • 看起来 data 是一个数组。试试 data[index].user
  • 我喜欢 stackoverflow,我在几分钟内得到了多个答案。谢谢大家

标签: javascript jquery json


【解决方案1】:

data数组,而您想要数组中的项目

$.each 不会将 data 更改为项目,而是将单个项目作为第二个参数传递给您提供的函数:

$.each(data, function (index, item) {
    // Use item in here
    $('body').append('<li id="' + item.user + '">' + item.user + '</li>');
});

或者,您可以使用data[index]

$.each(data, function (index) {
    // use data[index] in here
    $('body').append('<li id="' + data[index].user + '">' + data[index].user + '</li>');
});

顺便说一句,避免丑陋的字符串连接:

$('<li>', {id: item.user, text: item.user}).appendTo('body');

【讨论】:

  • 太棒了,谢谢。虽然我收到错误:Uncaught SyntaxError: Unexpected identifier on the body.append 行。有什么想法吗?
  • @Cheyne,你能粘贴你的确切行吗?
  • $.each(data, function(index) alert(data[index].user); });
  • 等等,我少了一个大括号...现在修好了..感谢您的帮助!
【解决方案2】:

你想要的是

                 $.each(data, function(index) {
                    //items.push('<li id="' + key + '">' + val + '</li>');
                    $('body').append('<li id="' + data[index].user + '">' + data[index].user + '</li>');
                    alert(data);
                 });

【讨论】:

  • $.each 将数组中的项目 (data[index]) 作为第二个参数传递给您的函数,因此您不需要像那样访问它。
  • 我对 jQuery 了解不多,我只是在这里陈述显而易见的事情 :) 但看起来有更好的解决方案,所以...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2019-03-18
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
相关资源
最近更新 更多