2012-05-01 167 views
0

我很新的JavaScript和我不知道如何在JSON字符串访问一定的价值。我有这些对象的lsit,我通过循环与$.each函数访问它们。但它似乎并没有在这里工作。我试着做alert(data.type);,但它给了我undefined变量。如何访问此JSON值?

TL; DR:
这是我通过AJAX获得的JSON字符串。如何使用jQuery访问JavaScript中的type值?

{ 
    "parent_id": "100003381460677", 
    "type": "post", 
    "title": "a", 
    "body": "b", 
    "date_normal": "01 May 2012" 
} 
+1

你必须首先解析JSON(显式或隐式,请参阅http://stackoverflow.com/questions/8951810/how-to-parse-json-data-with-jquery-javascript)。然后你有一个JavaScript对象,我假设你知道如何使用它。 –

+0

@FelixKling是的,我不知道我需要解析它。谢谢,现在它工作。 – sed

回答

3

parseJSON帮助你

var obj = jQuery.parseJSON('{"name":"John"}'); 
alert(obj.name); 
+0

正确的,我是用的插件,并恢复它作为字符串,而不是JSON,这就是为什么它去定义。当我将字符串解析为有效的JSON时,它现在可以工作。谢谢。 – sed

1

假设这个JSON数据来自AJAX调用确保您已指定正确的数据类型(json)如果你的服务器没有正确配置发送正确的Content-Type响应头:

$.ajax({ 
    url: '/foo', 
    type: 'POST', 
    dataType: 'json', 
    success: function(result) { 
     alert(result.type); 
    } 
}); 

然后传递到成功回调参数将已经表示javascript对象(来自服务器的响应JSON字符串的jQuery反序列化自动地)。一旦你有一个JavaScript对象,你可以直接通过名字访问它的属性。在这个例子中,你已经显示它是一个简单的对象,而不是一个数组。所以你可以通过名字直接访问属性。

0

假设你使用它作为你的Ajax回调:

function(data){ ... } 

你可以用点符号访问它:

data.type

0

如果你是使用$.getJSON(这会自动解析AJAX响应作为JSON对象)然后

$.getJSON("<url>", function(data, status) { 
    $.each(data, function(i, elem) { 
      console.log(elem.type); 
    }); 
}); 

。注意,第一个参数在$.each回调是阵列中的索引,而不是元件本身(这是第二个参数)。