【问题标题】:AJAX : how to send backslash in data?AJAX:如何在数据中发送反斜杠?
【发布时间】:2012-07-16 16:56:19
【问题描述】:

我正在尝试通过 ajax 发送 php 代码以便将其保存在文件中。 但是当我发送类似的东西时:

...$buffer = "if(\$_POST){".chr(13).chr(10);...

反斜杠消失了!

这是我正在使用的代码:

$.post('save.php', {
            "c":  window[currentCode].getValue(),
            processData: false,
            "f": fileName
        }, function(data){
           ....
        });
        return false;
}

提前致谢!

【问题讨论】:

  • 您需要转义反斜杠才能使其具有字面意义。只需将其加倍,然后再添加一个以正确转义$if(\\\$_POST)

标签: php javascript ajax backslash slash


【解决方案1】:

当我需要像这样在 javascript 中使用正则表达式编辑文件时,我仍然遇到问题:

function _basename(path) {
    return path.replace(/\\\\/g,'/').replace( /.*\\//, '' );
}

Uncaught SyntaxError: Unexpected token ,

我用来编辑 .php 文件的函数损坏了我的 javascript 代码。 我需要一种可以用于所有语言的代码编辑方法。

编辑: 我只是在 Linux 服务器中而不是在 Windows 中遇到这个问题

请帮忙!

【讨论】:

  • 在 Linux 中,额外的反斜杠被添加了两次!
【解决方案2】:

这不是 Ajax 问题;你误解了逃避。在 PHP 中,"\$" 的计算结果为字符串 $,因为反斜杠只有转义功能(如果你在浏览器中打开 save.php,你也会看到 $)。要写字面量\$,首先需要写\字符串(但反斜杠也必须转义,所以我们有"\\",然后写$"\$"。这样做

$buffer = "...\\\$_POST...";

产生预期的结果。

另见http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double

【讨论】:

    【解决方案3】:
    "if(\\\$_POST){"
    

    前面还有两个反斜杠。

    【讨论】:

    • 谢谢。解决方法:window[currentCode].getValue().replace(/\\/g,"\\\\")
    • 这可能会在您的代码的其他区域产生一些无法预料的后果。
    • 目前我对您的问题有点困惑,所以我不知道如何提供帮助,但这里有一些参考资料可以帮助您前进。 the php manual on stringsthe php manual on str_replace()
    猜你喜欢
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2014-09-09
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多