1

我在 PHP 中创建一个 JSON 对象,如下所示:

echo json_encode(array("results" => array(array("user" => $member['user']),array("company" => $member['company']))));

在 JavaScript 中,我得到如下信息:

"{"results":[{"user":"David"},{"company":"something"}]}"

然后我尝试验证这个 JSON,它是无效的,但是当我在开头和结尾删除双引号时,它就是验证 JSON。

我究竟做错了什么?应该是这样的:

{"results":[{"user":"David"},{"company":"something"}]}

编辑:

我的 AJAX 调用的一部分:

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);
            }
        }
4

3 回答 3

6

您似乎正在对其进行双重编码。要么是这样,要么你正在对其进行编码,然后将其转储在引号内。

要清楚,你应该有这样的东西:

var myJSobject = <?php echo json_encode(...); ?>;

然后就可以走了,其他什么都不需要。

于 2013-08-15T09:23:01.790 回答
0

似乎您从某处(从日志或其他东西?)复制带有引号的字符串,并尝试在其他地方进行验证。echo json_encode(..)应该给你正确的Json字符串!

于 2013-08-15T09:26:42.587 回答
0
echo json_encode(

array(
  "results" => 
     array(
        array("user" => $member['user'], "company" => $member['company'] ),
        array("user" => $member['user2'], "company" => $member['company2'] )
       )
     )
 );
于 2013-08-15T09:23:57.910 回答