在我的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
。
如果有人能告诉我我的代码有什么问题,我们将非常感激。谢谢。
答案 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”]