Javascript 无法从JSON数组和对象中获取值
在我的Javascript和PHP中,我已经成功地执行了一个.ajax调用来获取数组。但是,当我想显示每个对象的值时,我无法这样做 PHP: 所以当我Javascript 无法从JSON数组和对象中获取值,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,在我的Javascript和PHP中,我已经成功地执行了一个.ajax调用来获取数组。但是,当我想显示每个对象的值时,我无法这样做 PHP: 所以当我console.log(data)时,它看起来是这样的: ["{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}", "{"request_id":14, "reqName":"Rin", "reqSubject":["English","E Math"]}"]
console.log(data)
时,它看起来是这样的:
["{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}", "{"request_id":14, "reqName":"Rin", "reqSubject":["English","E Math"]}"]
当我console.log(数据[0])
时,我能够获得第一个对象:
{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}
但是,当我希望像这样获取对象的值时,console.log(数据[0].request\u id)
,它会返回一个未定义的
如果有人能告诉我我的密码有什么问题,我将不胜感激。多谢各位
您得到的响应是json
格式的。你必须先解析它。试试-
var response = jQuery.parseJSON(data[0]); //parse json data
console.log(response.request_id);
在你的帖子中你提到了这一点
“但是,当我希望像这样获取对象的值时,
console.log(数据[0].request\u id),它返回一个未定义的值。“
要将结果视为对象,应使用JSON.parse()方法将其解析为JSON对象
否则,可以将其用作数组
数据[0][“请求id”][“{”请求id:13,
注意“直接在[]之后。这不是javascript控制台中包含对象的数组的输出格式,而是包含字符串的数组。
那是因为
$request = '{"request_id":' .$requestId. ', "reqName":"' .$requestName. '", "reqSubject":' .json_encode($requestSubjects). '}';
在您的php脚本中。您在这里不是构建一个hashmap/对象,而是一个字符串。它由json_encode进行编码
试一下
$request = array(
"request_id" => $requestId,
"reqName" => $requestName,
"reqSubject" => $requestSubjects,
)
array_push($requestArray, $request);
echo json_encode($requestArray);
您可以使用JSON.stringify()
将对象转换为字符串
试试看
$request = {"request_id":"aaaa", "reqName":"bbbb", "reqSubject":"ccc"};
alert(JSON.stringify($request.request_id));
您的响应是JSON,它意味着字符串。您应该用:var result=JSON.parse(数据[0])解析它;然后result.request\u id将为您提供所需的内容。它应该是workdata[0][“request\u id”]
和data[0].request_id
在JS中是等效的。你能为这个问题提供一个合适的解决方案吗?我认为这可能是正确的,但答案应该解释为什么它是一个答案,而不仅仅是向读者转储代码。
$request = {"request_id":"aaaa", "reqName":"bbbb", "reqSubject":"ccc"};
alert(JSON.stringify($request.request_id));