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

时间:2015-08-03 20:09:24

标签: php jquery ajax

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

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

    }
});

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

JeCH+2CJZvAbH51zhvgKfg==

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

JeCH 2CJZvAbH51zhvgKfg== 

哪些显示的替换用空格替换,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

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

data: { data: data },

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

data: 'data=' + encodeURIComponent(data),

答案 1 :(得分:1)

看一下the jQuery docs,您可以将对象传递给data,而不是手动构建的实际查询。尝试:

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

    }
});

答案 2 :(得分:0)

我认为您需要使用其网址编码值+%2B进行编码。

为此,请使用replace方法。

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