从Jquery Post中删除转义字符

对于我的问题,有几个类似的问题,但我没有找到一个可以帮助我解决问题的好问题。 我的问题是:

我想将一个JQuery对象转换为一个Json字符串,然后将此字符串发布到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\"}]} 

如何删除转义字符? 提前感谢任何评论或帮助:)

我实际上刚刚遇到了同样的问题。

我用striplashes()来修复它;

这应该可以正常工作,除非你确实在数据中有斜杠。

 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', ), ), ) 

你错误地调用$.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']