无法从JSON数组和对象获取值

时间:2015-02-04 12:09:37

标签: javascript php jquery arrays json

在我的Javascript和PHP中,我设法进行.ajax调用以获取数组。但是,当我想显示每个对象的值时,我无法显示。

PHP:

$request =  '{"request_id":' .$requestId. ', "reqName":"' .$requestName. '", "reqSubject":' .json_encode($requestSubjects). '}';

array_push($requestArray, $request);

echo json_encode($requestArray);

所以当我console.log(data)看起来像这样:

["{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}", "{"request_id":14, "reqName":"Rin", "reqSubject":["English","E Math"]}"]

当我console.log(data[0])时,我能够获得第一个对象:

{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}

但是当我想要获取对象的值console.log(data[0].request_id)时,它会返回undefined

如果有人能告诉我我的代码有什么问题,我们将非常感激。谢谢。


4 个答案:

答案 0 :(得分:2)

["{"request_id":13,
请注意“直接在[。这不是包含javascript控制台中对象的数组的输出格式,而是包含字符串的数组。” 这是因为

$request =  '{"request_id":' .$requestId. ', "reqName":"' .$requestName. '", "reqSubject":' .json_encode($requestSubjects). '}';
在你的PHP脚本中

。你不是在这里构建一个hashmap / object而是一个字符串。它由json_encode编码。

尝试

$request = array(
    "request_id" => $requestId,
    "reqName" => $requestName,
    "reqSubject" => $requestSubjects,
)
array_push($requestArray, $request);

echo json_encode($requestArray);

答案 1 :(得分:1)

您可以使用JSON.stringify()将对象转换为字符串。

试试吧

$request =  {"request_id":"aaaa", "reqName":"bbbb", "reqSubject":"ccc"};
 alert(JSON.stringify($request.request_id));

答案 2 :(得分:0)

您获得的回复是json格式。你必须先解析它。试试 -

var response = jQuery.parseJSON(data[0]); //parse json data
console.log(response.request_id);

答案 3 :(得分:0)

在你的帖子中你提到了

“但是当我想得到这样的对象的值时,
 console.log(data [0] .request_id),它返回一个未定义的。“

要将结果视为对象,应使用JSON.parse()方法将其解析为JSON对象
否则你可以将它用作数组

数据[0] [ “REQUEST_ID”]