我从AJAX调用中获取一个JSON对象并记录结果如下:
console.log(response);
这是控制台中记录的响应:
{"filename":"new.jpg","orientation":"vertical"}
然而,当我
console.log(response.orientation);
我得到一个未定义的回复。
我读过的大多数答案表明返回的是一个数组而不是一个对象而且响应[0] .orientation应该有效,但这不是这里的情况。当我将相同的数组分配给控制台中的另一个变量时:
var obj = {"filename":"new.jpg","orientation":"vertical"}
然后obj.orientation返回正确的值。
我在PHP中创建JSON对象:
$response=array('filename' => $newfilename, 'orientation' => $orientation);
$response=json_encode($response);
echo $response;
显然为什么属性显示未定义?
答案 0 :(得分:6)
要么:
header("Content-type: application/jason");
在PHP中,在JavaScript中的AJAX调用中指定dataType: "json"
,或者调用JSON.parse
。
答案 1 :(得分:2)
您需要解析字符串以获取正确的JSON对象。 JSON.parse(响应); 将为您提供一个JSON对象,您可以从中读取属性
答案 2 :(得分:1)
您可以在jsfiddle中尝试以下示例。
这不是使用JSON.parse()的更好方法;或$ .parseJSON(); (jquery版)
但如果这是你的问题,json作为字符串返回,则修复它并且你可以改变你的代码
答案 3 :(得分:0)
我认为ajax / php部分应该是这样的 Ajax的
$.ajax({
type: "POST",
url: "link.php",
dataType: "json",
success: function(result){
alert(result.orientation);
}
});
PHP
$response=array("filename" => "$newfilename", "orientation" => "$orientation");
$response=json_encode($response);
echo $response;
确保使用至少5.2 php版本