我通过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
答案 0 :(得分:0)
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>