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