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

Php 为什么用空格替换字符串中的加号,php,jquery,ajax,Php,Jquery,Ajax,我使用ajax通过对set.php的ajax调用发送数据: $.ajax({ url: "ajax/set.php", dataType: "html", type: 'POST', data: "data=" + data, success: function (result) { alert(result); } }); 在发送AJAX调用之前,我使用JavaScript来alert()数据,数据是: JeCH+2CJZvA

我使用ajax通过对set.php的ajax调用发送数据:

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

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

JeCH+2CJZvAbH51zhvgKfg==
JeCH 2CJZvAbH51zhvgKfg== 
但是当我使用
$\u POST[“data”]
时,数据是:

JeCH+2CJZvAbH51zhvgKfg==
JeCH 2CJZvAbH51zhvgKfg== 

显示用空格替换的加号,如何解决此问题?

我相信您需要使用其URL编码值
+
对其进行编码
%2B

为此,请使用
replace
方法

var data = data.replace(/\+/g, "%2B");

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

data: { data: data },
如果确实要传递字符串,则应在可能包含特殊字符的任何值上使用
encodeURIComponent

data: 'data=' + encodeURIComponent(data),
看一下,您可以将对象传递给
数据
,而不是手动生成的实际查询。尝试:

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

    }
});

可能重复使用更好的
encodeURIComponent
,以便替换所有特殊字符,而不仅仅是
+
。这是非常正确的。我想我的答案是完全专注的。如果有人使用我的答案,你真的应该使用
encodeURIComponent
来解释所有特殊字符。不过,我认为其他人的答案更好/更准确。他们中有人为你工作了吗?