繁体   English   中英

PHP的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM