2012-05-01 79 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回調是陣列中的索引,而不是元件本身(這是第二個參數)。