Ajax var#u dump表示75个字符的字符串,可以';不要附和它,不要';t json_decode()
我正在用AJAX将一些数据发布到PHP页面,但我无法对其进行解码Ajax var#u dump表示75个字符的字符串,可以';不要附和它,不要';t json_decode(),ajax,json,var-dump,Ajax,Json,Var Dump,我正在用AJAX将一些数据发布到PHP页面,但我无法对其进行解码json\u decode()返回空值。所以我想如果我回显它,我可以通过jsonlint运行它。但是什么也没有出现。为了确定数据是否到达PHP页面,我尝试了var\u dump()数据。奇怪的是,它显示: string(75) "{\"title\":\"fds\",\"body\":\"fds\",\"tags\":\"fds\",\"type\":\"question\"}" 因此数据到达页面。在删除反斜杠后,我通过jsonl
json\u decode()
返回空值。所以我想如果我回显它,我可以通过jsonlint运行它。但是什么也没有出现。为了确定数据是否到达PHP页面,我尝试了var\u dump()
数据。奇怪的是,它显示:
string(75) "{\"title\":\"fds\",\"body\":\"fds\",\"tags\":\"fds\",\"type\":\"question\"}"
因此数据到达页面。在删除反斜杠后,我通过jsonlint运行了它,它说JSON是有效的。这怎么可能
根据var\u dump()
和jsonlint,我得到了一个75个字符的有效JSON字符串,但我不能echo
它或JSON\u decode()
它。
编辑:显然我做错了什么,我现在可以回显了(我可能在
$\u 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);
JS代码:
var simpleObj = {title: "rew", body: "rew", tags: "rew", type: "question"};
$.post('savepost.php', "q=" + JSON.stringify(simpleObj), function(data) {
$('#resultDiv').html("DATA: " + data);
});
最终编辑:我终于自己解决了。事实上,我甚至在问之前就发现了这个问题,但我认为它是“无害的”,并且认为这不会导致这个问题。我找到了答案!当我通过
jsonlint.com
运行它时,它说它因为反斜杠而无效。我认为这些只是为了将JSON中的引号标记为普通引号,而不是字符串结尾和起始引号,我认为它们是“无害的”。然后我想到了函数
addslashes()
,并认为应该有一个相反的函数。我找到了stripslashes()
,这就解决了问题
新代码:
// code to check if the user is logged in
$post = json_decode(stripslashes($_POST['q']));
echo "var_dump(\$_POST['q']): ";
var_dump($_POST['q']);
echo "<BR /><BR />";
echo "var_dump(\$post): ";
var_dump($post);
//检查用户是否登录的代码
$post=json_解码(带斜杠($_post['q']);
echo“var\u dump(\$\u POST['q']):”;
变量转储($_POST['q']);
回声“
”;
echo“var_dump(\$post):”;
var_dump(员额);
显示您的代码。。尝试console.log(response)
您的ajax响应ajax响应是var\u转储输出。@mithunsatheesh查看我的编辑。显示代码。。把它放在你的qn中的提琴或帖子上。@mithunsatheesh如果JSON是有效的,并且它到达了我的PHP,我想我的JS可能是正确的,所以我包括了我的PHP。
// code to check if the user is logged in
$post = json_decode(stripslashes($_POST['q']));
echo "var_dump(\$_POST['q']): ";
var_dump($_POST['q']);
echo "<BR /><BR />";
echo "var_dump(\$post): ";
var_dump($post);