Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从JSON数组和对象中获取值_Javascript_Php_Jquery_Arrays_Json - Fatal编程技术网

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

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"]}"]

在我的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(数据[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将为您提供所需的内容。它应该是work
data[0][“request\u id”]
data[0].request_id
在JS中是等效的。你能为这个问题提供一个合适的解决方案吗?我认为这可能是正确的,但答案应该解释为什么它是一个答案,而不仅仅是向读者转储代码。
$request =  {"request_id":"aaaa", "reqName":"bbbb", "reqSubject":"ccc"};
 alert(JSON.stringify($request.request_id));