【发布时间】:2012-03-24 09:54:49
【问题描述】:
我的代码有一个缺陷,我有点困惑。
$.ajax({
type: 'POST',
url: '/contact/index/add/',
data: $("#addContact").serialize(),
success: function(data, status, xhttp) {
var response = eval ("[" + data + "]");
console.log(response.msg);
if ( response.success ){
console.log( response.msg );
} else {
console.log( response.msg );
}
},
dataType: "html"
});
我正在寻找的是能够访问数组(以 JSON 格式编码)的响应,但是我在 console.log(response.msg) 行上得到“未定义”
如果我 console.log(response) 它显示(在萤火虫中)为:
[对象 { 成功=true, msg="test"}]
请求正在发回以下字符串:
{"成功":true,"msg":"测试"} 这就是为什么我必须将响应包含在 [ ] 中以进行评估。
所以我很困惑的是:如何访问所述数组的属性。
我有的服务器端(php/zend框架)
echo Zend_Json_Encoder::encode(array('success'=>true,'msg'=>'test'));退出;
我需要做什么才能访问数组的键/值,如行中所示
if( response.success ) { // do something }
我需要修改服务器端还是javascript端?
【问题讨论】:
-
-- 更新 -- 对于初学者,我将 dataType 更正为 json,而不是 HTML,这解决了我的 [] 问题。
-
-- 第二次更新 -- 请忽略这个问题,这就是整个问题,我需要做的就是设置正确的数据类型。