2012-06-27 40 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