我正在使用AJAX调用,并且我正在生成此JSON对象,该对象将被发送回JavaScript。 当我在JavaScript中收到它时,我无法从中获取值。
PHP:
echo json_encode(array("results" => array(array("user" => $member['user']),array("company" => $member['company']))));
JS:
success: function(response)
{
for(var i = 0;i < response.results.length; i++)
{
sessionStorage.setItem('user',response.results[i].user);
sessionStorage.setItem('company',response.results[i].company);
}
}
我无法从收到的回复中读取任何值。
我得到的回应是这种格式:
{"results":[{"user":"David"},{"company":"something"}]}
读取此JSON对象的正确方法是什么?
答案 0 :(得分:2)
由于您正在尝试访问未定义的结果[0] .company和结果[1] .user,并且因为只有结果[1] .company和结果[0] .user在您的对象中定义,如果您改变你的PHP,如下所示你的JavaScript应该工作,除非响应只是一个字符串:
echo json_encode( array(
"results" => array(
array(
"user" => $member['user'],
"company" => $member['company']
)
)
));
如果响应只是一个字符串,请更改您的JavaScript代码,如下所示:
success: function(response)
{
response = JSON.parse(response);
或者
dataType: "json",
success: function(response)
{
答案 1 :(得分:0)
在您的JSON响应中,您的结果包含一个包含2个对象的数组。第一个包含用户,第二个包含公司。但是,你的for循环你希望数组中的两个元素同时具有用户和公司。看起来你正试图发送一个用户和他们的公司。如果是这种情况,那么您的代码应如下所示:
PHP:
echo json_encode(array("results" => array("user" => $member['user'],"company" => $member['company'])));
JS:
success: function(response)
{
sessionStorage.setItem('user',response.results.user);
sessionStorage.setItem('company',response.results.company);
}
您的回答将如下所示。
{"results":{"user":"David","company":"something"}}