我在下面的代码中遇到了一些麻烦。控制台数收益:如何避免从PHP返回的JSON中的反斜杠?
"returningList{"view":0,"new":1,"random":1} result: "{\"view\":0,\"new\":1,\"random\":1}""
正如你可以看到它的收单反斜线,使其不再JSON,尽管指定datatype : 'json'。
问题似乎发生在从PHP读回javascript的结果,因为如果我在写回$jsonArr到MySQL之前回显SQL数据显示正确的字符串(即没有反斜杠)。
请帮忙,因为这种明显的疯狂真的让我兴奋起来。我想要做的就是获取我的数据 - 在我的实际代码中,我通常不会返回作为数据传入的JSON,但这里只需证明这一点就足够了。我认为'json'数据类型意味着它会接受回声JSON而不会破坏它。
对于以下直言不讳,但为了回应类似的问题,我看到人们只是说“它逃避了引号”,就好像那个回答了这个问题 - 在这种情况下,至少它似乎没有:显然(AFAIK)是反斜杠的来源,但引号是JSON语法的一部分(它知道它是期望的),而不是字段内容的一部分,所以它们显然不应该被转义。我需要一个解决方案请。谢谢。
window.newGot = listBuild({
'view' : 0,
'new' : 1,
'random' : 1
});
function listBuild(options)
//Fill the new list.
return $.ajax({
type : "POST",
url : "./php/getList.php",
cache : false,
data : {
options : JSON.stringify(options)
},
datatype : "json"
}).then(function(jsonList) {
console.log('returningList' + JSON.stringify(options) + ' result: ' + JSON.stringify(jsonList));
return jsonList;
});
}
这里的php文件内容:
$options = json_decode($_POST['options'], true);
$jsonArr = json_encode($options);
echo $jsonArr;
2014-09-24
SteveC
+1
的斜线不会引起任何问题,这是相当正常的,因为据我所知? –
2014-09-24 18:10:49
+2
为什么您将JSON作为字符串传递给'data',然后在服务器端对其进行解码,是没有意义的? –
2014-09-24 18:12:23
+0
@adeneo - 我也有点困惑,为什么你要处理的数据也是这种感觉 - 你不能把它作为一个对象,并允许AJAX函数来处理转换? –
2014-09-24 18:14:08