PHP的json_decode返回空字符串(不是NULL)

时间:2015-03-26 15:12:22

标签: javascript php json

我通过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

1 个答案:

答案 0 :(得分:0)

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>