0

嗨,我有以下代码:

$.ajax({'type':'POST', 'url':'https://www.123.com/site/gethistory',
        'data':{'a': this.username, 'b': username},
        'success':function(history){
            alert(history);
            var codes = jQuery.parseJSON(history);
            $.each(codes, function(key, value) {
                alert(key);
            }); //each
        }, 
        'error':function(){
        }
       });  //ajax

现在密钥未定义。我试图提醒(value.text),它仍然给我未定义。


历史被警告为:

[{"demo":{"text":"hi man","time":"1380167419"},"admin":{"text":"hi","time":"1380167435"},"demo" :{"text":"这现在完美无缺。","time":"1380167436"},"demo":{"text":"我们基本上完成了这个/","time":"1380167443"} }]

4

3 回答 3

1

它在这个小提琴中工作正常。但是,您的 JSON 存在问题。

尽管它在语法上是正确的,但它的结构使得您返回一个对象的数组,该对象具有许多同名的属性:

[
  { "demo":{
      "text":"hi man",
      "time":"1380167419"
    },
    "admin":{
      "text":"hi",
      "time":"1380167435"
    },
    "demo":{
       "text":"this works flawless now.",
       "time":"1380167436"
    },
    "demo":{
      "text":"we are basically done with this/",
      "time":"1380167443"
    }
  }
]

每个连续demo的都将覆盖前一个,因此您只会看到最后一个demo属性。

于 2013-09-27T00:28:35.340 回答
0

看起来您的 JSON 有问题。尝试警报代码并确保解析的 JSON 格式正确,即键/值对

于 2013-09-27T00:16:02.970 回答
0

无需使用 jQuery 解析 JSON。只是var codes = JSON.parse(history)

$.each(codes, function(k, v){
  console.log(v )
});
于 2013-09-27T00:23:28.920 回答