【问题标题】:why replaced plus in string by space为什么用空格替换字符串中的加号
【发布时间】:2015-10-26 01:38:08
【问题描述】:

我正在使用 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==

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

JeCH 2CJZvAbH51zhvgKfg== 

哪个显示加号被空格替换,我该如何解决这个问题?

【问题讨论】:

标签: php jquery ajax


【解决方案1】:

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

为此,请使用replace 方法。

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

【讨论】:

  • 最好使用encodeURIComponent,这样所有特殊字符都会被替换,而不仅仅是+
  • 确实如此。我想我的答案只是专注于。如果有人使用我的答案,您真的应该使用encodeURIComponent 来解释所有特殊字符
  • 没问题,我认为其他人有更好/更准确的答案。它们中的任何一个对你有用吗?
【解决方案2】:

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

data: { data: data },

如果你真的想传递一个字符串,你应该在任何可能包含特殊字符的值上使用encodeURIComponent

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多