对于我的问题,有几个类似的问题,但我找不到一个可以帮助我解决问题的好问题。我的问题是:
我想将JQuery对象转换为Json String,然后将此字符串发布到PHP webPage,这样运行得非常好。但是当我在服务器(php页面)上收到它时,它充满了转义字符。
这是我在客户端的代码:
var jsonRemision = JSON.stringify(remision,false);
$.post("updateremision.php",
{
rem:jsonRemision,
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: false,
},
function(data,status){
if(status=="success"){
alert("Good Message");
}else{
alert("Bad Message");
}
});
以下是服务器上的代码:
$remision = json_decode($_POST['rem']);
现在,当我看到$ _POST [' rem']中的内容充满了转义字符时," 。这些转义字符不允许我使用jsondecode ...充满转义字符的json看起来像这样:
{\"id\":\"12\",\"fecha\":\"2014-06-25\",\"ciudad\":\"Manizales\",\"camion\":\"NAQ376\",\"driver\":\"16075519\",\"cant\":\"0\",\"anticipos\":[{\"type\":\"1\",\"com\":\"Comment\",\"costo\":\"1234\"}]}
如何删除转义字符?提前感谢任何评论或帮助:)
答案 0 :(得分:0)
您未正确调用$.post
。第二个参数是所有POST
参数,它不是选项结构。如果您想传递选项,则必须使用$.ajax
:
$.ajax("updateremission.php", {
data: { rem: jsonRemission },
dataType: "json",
success: function(data, status) {
if(status=="success"){
alert("Good Message");
}else{
alert("Bad Message");
}
}
});
您不应该使用processData: false
,因为这样会阻止将参数放入$_POST['rem']
。
答案 1 :(得分:0)
我实际上最近才遇到同样的问题。
我使用stripslashes()修复它;
这应该可以正常工作,除非你确实在数据中有斜杠。
var_export(json_decode(stripslashes('{\"id\":\"12\",\"fecha\":\"2014-06-25\",\"ciudad\":\"Manizales\",\"camion\":\"NAQ376\",\"driver\":\"16075519\",\"cant\":\"0\",\"anticipos\":[{\"type\":\"1\",\"com\":\"Comment\",\"costo\":\"1234\"}]}'), true));
输出:
array (
'id' => '12',
'fecha' => '2014-06-25',
'ciudad' => 'Manizales',
'camion' => 'NAQ376',
'driver' => '16075519',
'cant' => '0',
'anticipos' =>
array (
0 =>
array (
'type' => '1',
'com' => 'Comment',
'costo' => '1234',
),
),
)