【问题标题】:jQuery serialize converts all spaces to plusjQuery序列化将所有空格转换为加号
【发布时间】:2023-03-19 10:50:01
【问题描述】:

目前,无论我在哪里使用序列化,我都必须像这样使用它:

.serialize().replace(/\+/g,'%20');

否则表单数据中的任何空格都将被转换为+。是否有可以将其设为默认值的设置。

【问题讨论】:

    标签: jquery serialization space


    【解决方案1】:

    为了好玩,这里有一个不使用临时变量的替代方法:

    $.fn.serializeAndEncode = function() {
        return $.map(this.serializeArray(), function(val) {
            return [val.name, encodeURIComponent(val.value)].join('=');
        }).join('&');
    };
    
    $("#formToSerialize").serializeAndEncode();
    

    【讨论】:

    • 这正是我一个人在做的事情。
    【解决方案2】:

    我不得不做同样的事情。 特里使用 escape() 给出的解决方案不起作用。 = 和 & 正在被编码(我们不希望这样)并且 + 仍然存在。

    我所做的是创建自己的序列化函数:

    var QueryString = "";
    $(selector).each(function(index) {
        if(QueryString != "") QueryString += "&";
        QueryString += $(this).get(0).id + "=" + encodeURIComponent( $(this).val() );
    });
    

    【讨论】:

      【解决方案3】:

      不要相信有默认值,您需要将字符串编码为one of these ways

      虽然您可以创建自己的插件:

      jQuery.fn.serializeAndEncode = function() {
          return escape(this.serialize());
      }
      
      $(myForm).serializeAndEncode();
      

      【讨论】:

      猜你喜欢
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 2012-05-21
      • 1970-01-01
      • 2019-07-03
      • 2014-07-28
      相关资源
      最近更新 更多