【发布时间】:2012-12-24 19:26:13
【问题描述】:
我正在使用 AJAX 将一些数据发布到 PHP 页面,但我无法对其进行解码。 json_decode() 返回 NULL。所以我想如果我回显它,我可以通过 jsonlint 运行它。但什么都没有出现。为了查明数据是否到达 PHP 页面,我尝试var_dump() 数据。它显示出来很奇怪:
string(75) "{\"title\":\"fds\",\"body\":\"fds\",\"tags\":\"fds\",\"type\":\"question\"}"
所以数据到达页面。删除反斜杠后,我通过 jsonlint 运行它,它说 JSON 是有效的。这怎么可能?
根据var_dump() 和 jsonlint,我得到了一个有效的 75 个字符的 JSON 字符串,但我不能 echo 它或 json_decode() 它。
编辑:
显然我做错了什么,我现在可以回应它(我可能在$_POST 数组键中打错了)。它呼应了这一点:
{\"title\":\"tre\",\"body\":\"tre\",\"tags\":\"tre\",\"type\":\"question\"}
再一次,没有反斜杠 JSONLint 告诉我它是有效的 JSON。
编辑 2:
这是 PHP 代码:
// code to check if the user is logged in
$post = json_decode($_POST['q']);
echo "var_dump(\$_POST['q']): ";
var_dump($_POST['q']);
echo "<BR /><BR />";
echo "var_dump(\$post): ";
var_dump($post);
输出:
var_dump($_POST['q']): string(74) "{\"title\":\"gfd\",\"body\":\"gf\",\"tags\":\"gfd\",\"type\":\"question\"}"
var_dump($post): NULL
JS代码:
var simpleObj = {title: "rew", body: "rew", tags: "rew", type: "question"};
$.post('savepost.php', "q=" + JSON.stringify(simpleObj), function(data) {
$('#resultDiv').html("DATA: " + data);
});
最终编辑:
我终于自己解决了。实际上我什至在我问之前就发现了这个问题,但认为它是“无害的”,并且认为这不会导致这个问题。
【问题讨论】:
-
向我们展示你的代码..尝试
console.log(response)你的ajax响应 -
AJAX 响应是 var_dump 输出。
-
@mithunsatheesh 查看我的编辑。
-
向我们展示代码.. 将其放在小提琴上或发布在您的 qn 中。
-
@mithunsatheesh 如果 JSON 有效并且到达我的 PHP,我认为我的 JS 可能是正确的,所以我包含了我的 PHP。