1

我正在使用 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 对象的正确方法是什么?

4

2 回答 2

2

由于您正在尝试访问未定义的 results[0].company 和 results[1].user,并且由于您的对象中仅定义了 results[1].company 和 results[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) 
{
于 2013-08-15T19:58:24.197 回答
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"}}
于 2013-08-15T19:58:49.103 回答