[英]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'>=></font>
<b>array</b>
'l1' <font color='#888a85'>=></font>
<b>array</b>
'name' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'Impressions'</font> <i>(length=11)</i>
'l2' <font color='#888a85'>=></font>
<b>array</b>
'name' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'Clicks'</font> <i>(length=6)</i>
'domain' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'Media Performance'</font> <i>(length=17)</i>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.