jQuery serialize将所有空格转换为加号

时间:2012-06-14 01:36:09

标签: jquery serialization space

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

$("#formToSerialize").serializeAndEncode();

答案 1 :(得分:1)

我必须做同样的事情。 Terry用escape()给出的解决方案不起作用。 =和&正在编码(我们不希望这样),+仍在那里。

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

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

答案 2 :(得分:0)

不要相信存在默认值,您需要在one of these ways中对字符串进行编码。

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

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

$(myForm).serializeAndEncode();