为什么将字符串中的加号替换为空格

sah*_*r21 2 php ajax jquery

我使用 ajax 通过 AJAX 调用发送数据到 set.php:

$.ajax({
    url: "ajax/set.php",
    dataType: "html",
    type: 'POST',
    data: "data=" + data,
    success: function (result) {
        alert(result);

    }
});
Run Code Online (Sandbox Code Playgroud)

在发送 AJAX 调用之前,我使用 JavaScript 来获取alert()数据,数据是:

JeCH+2CJZvAbH51zhvgKfg==
Run Code Online (Sandbox Code Playgroud)

但是当我使用 时$_POST["data"],数据是:

JeCH 2CJZvAbH51zhvgKfg== 
Run Code Online (Sandbox Code Playgroud)

其中显示的加号替换为空格,我该如何解决这个问题?

Bar*_*mar 6

使用 时$.ajax,请使用对象而不是带有选项的字符串data:。然后 jQuery 会对其进行正确的 URL 编码:

data: { data: data },
Run Code Online (Sandbox Code Playgroud)

如果您确实想传递字符串,则应该使用encodeURIComponent可能包含特殊字符的任何值:

data: 'data=' + encodeURIComponent(data),
Run Code Online (Sandbox Code Playgroud)