PHP';s json_decode返回空字符串(不是NULL)


PHP's json_decode returns empty string (not NULL)

我正在通过AJAX将一个字符串化的JSON从客户端发送到服务器。然而,PHP无法对其进行解码,即使它的结构对我来说似乎是正确的。我已经看过类似问题的答案,在大多数问题中,json_decode返回NULL,但这里的情况并非如此,相反,它返回一个空字符串。

Javascript发送的内容:

{"columns":{"l1":{"name":"Impressions"},"l2":{"name":"Clicks"}},"domain":"Media Performance"}

PHP打印出的内容(与转义引号相同):

{'"columns'":{'"l1'":{'"name'":'"Impressions'"},'"l2'":{'"name'":'"Clicks'"}},'"domain'":'"Media Performance'"}

有人能看到这里的问题吗?这看起来很简单,但json_decode一直返回一个空字符串。

我很抱歉没有发布代码。

这是AJAX(str是上面给出的JS字符串):

$.ajax({
            type: "POST",
            url: base + "handlers/createreport.php",
            data: {
                str: str
            }
        })

这里是createreport.php,没有任何处理:

$str = $_POST['str'];
echo $str;  //prints out the string given above with escaped quotes
echo json_decode($str);     //empty string

AJAX中发送的data由服务器作为POST参数接收,因此您不需要解码json,否则将其用作数组。

我只是测试了一下,结果:var_dump($_POST['str']);

<pre class='xdebug-var-dump' dir='ltr'>
<b>array</b>
  'columns' <font color='#888a85'>=&gt;</font> 
    <b>array</b>
      'l1' <font color='#888a85'>=&gt;</font> 
        <b>array</b>
          'name' <font color='#888a85'>=&gt;</font>  <small>string</small> <font color='#cc0000'>'Impressions'</font> <i>(length=11)</i>
  'l2' <font color='#888a85'>=&gt;</font> 
    <b>array</b>
      'name' <font color='#888a85'>=&gt;</font> <small>string</small>     <font color='#cc0000'>'Clicks'</font> <i>(length=6)</i>
  'domain' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Media Performance'</font> <i>(length=17)</i>