Jquery获取对象的JSON值,其中键值等于ID变量

时间:2014-03-27 23:26:41

标签: jquery ajax json

好的,我发现了很多类似的线程,但似乎找不到我需要的东西。我相信我错过了一些明显的东西,但我是JSON菜鸟,所以请帮助我。

点击我获取ID并将其存储为变量。然后我想在“messageString”中找到一个JSON对象,其中msgstring = ID。然后在#convo-title中显示该消息的主题。

这是我的JSON:

{
"messageString":[
{
  "subject":"This is the message subject",
  "msgstring":"001",
  "attach":"shop-cart",
  "message":[
     {
        "date-time":"June 2, 2013 12:22 pm",
        "rec-name":"D. Craig",
        "mbr-href":"#craig",
        "msg-content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
     },
     {
        "date-time":"June 3, 2013 12:22 pm",
        "rec-name":"N. McCoy",
        "mbr-href":"#mccoy",
        "msg-content": "Vestibulum ultricies odio semper."
     }
  ]
},
{
  "subject":"This is a great subject",
  "msgstring":"002",
  "attach":"shop-cart",
  "message":[
     {
        "date-time":"June 2, 2013 12:22 pm",
        "rec-name":"D. Craig",
        "mbr-href":"#craig",
        "msg-content": "Lorem ipsum dolor sit amet."
     }
  ]
},
{
  "subject":"Interested in your tomatoes",
  "msgstring":"003",
  "attach":"shop-cart",
  "message":[
     {
        "date-time":"June 4, 2013 12:22 pm",
        "rec-name":"J. Smith",
        "mbr-href":"#smith",
        "msg-content": "Vestibulum vitae turpis sodales, pellentesque elit in, lobortis nisl."
     },
     {
        "date-time":"June 5, 2013 12:22 pm",
        "rec-name":"B. Wardlaw",
        "mbr-href":"#wardlaw",
        "msg-content": "Nunc pretium dictum justo sed luctus."
     }
  ]
}
]}

这是我的jQuery:

$('#conv-nav li').live('click', function () {
var id = $(this).attr('id');

$.getJSON('data/msg.json', {
        msgstring: id
}, function (data) {
        $('.string.msg').empty();
        $.each(data, function (i, item) {
                var title = item.subject;
                $('#convo-title').empty();
                $('#convo-title').text(title);
        });
 });
});

我已经验证我正在获取ID并且在firebug中我确实看到它获取带有id参数的JSON文件。 #convo-title清空,但新标题不插入。

萤火虫没有出现任何错误。

HELP !!我很感激你的帮助。

1 个答案:

答案 0 :(得分:1)

在您的代码中,您正在迭代数据,但第一条记录是messageString,您需要迭代messageString的内容

所以,根据你的json,看来这部分:

    $.each(data, function (i, item) {
            var title = item.subject;
            $('#convo-title').empty();
            $('#convo-title').text(title);
    });

应该是这样的:

    $.each(data.messageString, function (i, item) {
            var title = item.subject;
            $('#convo-title').empty();
            $('#convo-title').text(title);
    });