使用jQuery.post()时取消转义字符

时间:2014-05-27 21:05:34

标签: php jquery ajax

我建立了一个网站,用户可以提交一些代码,然后由php脚本接收并存储在服务器上的文件中。我使用jQuery $ .post()方法将代码发送到php脚本。我遇到的问题是,当我这样做时,jQuery会使用反斜杠转义任何单引号,双引号或反斜杠。这意味着当从文件中检索代码时,它包含不需要的反斜杠并且不会正确执行。如何确保在用户代码包含所需的转义字符的情况下不会产生任何影响,我如何取消这些字符。示例如下:

用户代码:

var someText = 'Don\'t';
提交这个的jQuery:

$.post("/submit.php", {id: 123, code: {main: "var someText = 'Don\'t';", foo: "bar"}}).done(function(data) {
    if (data === 'success') {
        // Do something.
    }
}

将脚本保存到文件的PHP脚本:

foreach($_POST['code'] as $file => $content) {
    if (ctype_alnum($file)) {
        file_put_contents("/code/" . $_POST['id'] . "/" . $file, $content);
    }
}

存储在服务器上的结果文件:

var someText = \'Don\\\'t\';

1 个答案:

答案 0 :(得分:0)

对此的解决方案比我预期的要简单得多,我在发布后就意识到了这一点,但我会留下这个问题以备将来参考。

我需要做的就是修改PHP脚本以使用stripcslashes方法删除服务器端的不需要的转义字符。修改后的PHP代码:

foreach($_POST['code'] as $file => $content) {
    if (ctype_alnum($file)) {
        file_put_contents("/code/" . $_POST['id'] . "/" . $file, stripcslashes($content));
    }
}