2012-06-27 37 views
1

我在我的項目中使用普通的JavaScript。我怎樣才能得到以下例子的價值?我需要檢測它是否返回真或假。如何從JSON響應中獲取數據?

{ 
    "category": "true" 
} 

我可以得到整個對象,但我只想提取類別的值。


從評論...

的JSON數據是基於表單提交的服務器返回。它一直說myObject是未定義的。我怎麼能通過這個,所以我的JavaScript可以讀取響應?

從評論...

我可以利用這個得到myObject的:if (form.XHR.status === 200) {var data = form.XHR.response;},但如果我嘗試做data.myObject它說,這是不確定的。

+0

那是一個字符串還是一個對象? –

+1

'foo.category'?另外,努力嘗試......這是非常基本的,可以通過任何搜索引擎訪問。 – yoda

+1

您的JSON是否已被解析?如果是這樣,是不是你知道如何訪問對象屬性?還是你知道如何,但它沒有給你預期的輸出。請在提問時提供一些相關信息。 – 2012-06-27 16:31:36

回答

3

您需要解析JSON,然後才能訪問它作爲一個目標......

if (form.XHR.status === 200) { 
    var data = form.XHR.response; 

    var parsed = JSON.parse(data); 

    alert(parsed.category); 
} 

這是爲什麼需要?這是因爲JSON不是JavaScript。這兩個術語不是同義詞。

JSON是一種文本數據交換格式。它需要被解析爲它被賦予的任何語言的數據結構。在你的情況下,語言是JavaScript,所以你需要把它解析成JavaScript數據。

當從xhr響應接收到它時,它將以所有文本數據在JavaScript中處理的形式接收。這是一個string。作爲一個字符串,你不能直接訪問表示的值。

JavaScript有一個名爲JSON.parse的內置解析器。這在上面的例子中用來做必要的轉換。

一些舊版瀏覽器不支持JSON.parse。如果你支持這些瀏覽器,你可以在http://json.org找到一個JavaScript解析器。

+0

這就是我所錯過的。謝謝。 – Zoolander

2

首先你需要一個變量來引用它:

var obj = { 
    "category": "true" 
}; 

那麼你可以說,例如:

alert(obj.category); 
+0

您也可以嘗試 obj [「category」] – Ravish

1
var myObject = { "category": "true"}; 

alert (myObject.category); 

但你可能想:

var myObject = { "category": true}; 

...如果您要測試真/假:

if (myObject.category) { 
    // category is true, so do your stuff here. 
} 
+0

JSON數據是基於表單提交從服務器返回的。它一直說myObject是未定義的。我怎麼能通過這個,所以我的JavaScript可以讀取響應? – Zoolander

+0

顯示更多編碼。你在那裏有錯誤。需要看到ajax調用。 –

+0

我可以得到myObject使用:if(form.XHR.status === 200){var data = form.XHR.response;},但如果我嘗試做data.myObject它說它是未定義的。 – Zoolander

0

您可以使用'。'來訪問json對象數據。或[關鍵]是這樣的:

var obj = { 
    "category": "true" 
}; 
console.log(obj.category); 
// Or 
console.log(obj["category"]); 

這裏是DEMO