2011-03-18 99 views
2

我想开发一个使用jQuery,AJAX和JSON的Web应用程序。 我有这样的代码:JSON对象,undefined?

console.log(response.s); 
if (response.s == true) { 
    alert('good'); 
} else { 
    alert('bad'); 
} 

response(通过console.log()上萤火虫)似乎是:

{"s":true} 

这似乎是一个JSON对象吧? 那么,我在这里添加的第一个代码行console.log(response.s);返回undefined。有什么问题?

+0

您可以在Firebug控制台中单击{“s”:true}对象并在对象(DOM)资源管理器中看到它,或者它是否在Firebug控制台中以字符串的形式写入(即不可点击)? – Nikhil 2011-03-18 15:09:31

+0

@Nikhil,我想它更像一个字符串。 – Shoe 2011-03-18 15:10:28

回答

7

什么是typeof (response)?如果它是一个字符串,那么你必须首先解析它。 (你会访问一个字符串,它不存在的s领域,使JavaScript的给你undefined,而不是抛出一个异常或者其他的。)

+0

我如何检查它的类型?我怎么解析它? – Shoe 2011-03-18 15:10:10

+0

从字面上输入控制台中的'typeof(response.s)'。或者输入'response.s.constructor'并查看给了你什么。 – Claudiu 2011-03-18 15:10:34

+1

我想你应该问一下'typeof response'。如果返回“string”,OP需要调用'jQuery.parseJSON(response)' – 2011-03-18 15:14:55

1

如果响应的content-typeapplication/json那么的JavaScript可能假设它只是一个字符串。

因此,提供正确的内容标题应该排序您的问题。

另外,你也可以使用eval()将字符串转换成json对象。

1

尝试使用:

var obj = jQuery.parseJSON(response); 
console.log(obj.s); 

希望它能帮助。