从Jquery Post中删除转义字符

时间:2014-07-09 17:03:09

标签: php jquery json post escaping

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

我想将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\"}]}

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

2 个答案:

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