【发布时间】:2013-05-16 19:59:48
【问题描述】:
我在 JavaScript 中有一个如下所示的 JSON 响应:
{"opt1":"2.92","opt2":"4.24","opt3":"6.36"};
这是应用console.log(data) 的结果,其中数据是响应:
success: function(data){
console.log("Ajax succeeded");
console.log(data);
console.log(data.opt1);
},
但是,我无法访问 opt1 的值。控制台指示未定义。任何想法为什么会这样? JSON 是有效的,我检查过了。
编辑
本例中的服务器使用 PHP 中的 json_encode 函数将数组转换为 JSON。我已经尝试删除最后的分号,这仍然给我一个未定义的 opt1 值。我也试过设置ajax调用的dataType,结果报错,提示有意外字符。
【问题讨论】:
-
最后真的有分号吗?那不是有效的 JSON。您确定
console.log(data)没有将 JSON 字符串 记录为字符串 吗?如果您没有明确告诉 jQuery 您期待 JSON,它会尝试猜测响应是什么格式,我猜由于您的字符串是 not 有效的 JSON,它不会为您解析它所以你不能访问属性。 -
显示更多代码 -- 您是在 AJAX 调用中指定
dataType: "json",还是服务器发送Content-type: application/json? -
@PankajGarg:1.您指向的答案与OP概述的问题无关。 2. 唠叨 OP 看你的答案在 SO 上 不酷。当您发布答案时,OP 会收到通知。这已经足够了。发表评论(更不用说不必要的粗体评论了)既不合适也无用。