2

我从 AJAX 调用中返回一个 JSON 对象并记录如下结果:

console.log(response);

这是控制台中记录的响应:

{"filename":"new.jpg","orientation":"vertical"}

然而,当我

console.log(response.orientation);

我得到一个未定义的响应。

我读过的大多数答案都表明返回了一个数组而不是一个对象,并且 response[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;

为什么属性显示未定义很明显吗?

4

4 回答 4

6

要么放:

header("Content-type: application/jason");

在 PHP 中,dataType: "json"在 JavaScript 中的 AJAX 调用中指定,或者调用JSON.parse.

于 2012-08-31T13:00:57.833 回答
2

您将需要解析您的字符串以获取正确的 JSON 对象。JSON.parse(响应);将为您提供一个 JSON 对象,您可以从中读取属性

于 2012-08-31T12:54:16.207 回答
1

您可以在 jsfiddle 中尝试以下示例吗?

这不是使用 JSON.parse() 的更好方法;或 $.parseJSON(); (jQuery版本)

但是,如果这是您的问题,json 作为字符串返回,这可以修复它,您可以更改您的代码

http://jsfiddle.net/dadviegas/gf8Yq/

于 2012-08-31T13:01:55.707 回答
0

I think the ajax / php part should look like 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;

Make sure that use at least 5.2 php version

于 2012-08-31T14:19:51.333 回答