如何使用jQuery将表单序列化为对象?

时间:2011-01-26 14:24:26

标签: jquery

$('form').serialize()会产生类似a=1&b=2的内容,但我想要得到的是{a:1,b:2}

怎么做?

此外,是否可以对div等任意容器执行此类工作?

1 个答案:

答案 0 :(得分:4)

jQuery不支持这个。您必须使用某些现代浏览器支持的JSON.stringify,但为了支持旧版浏览器,您必须将json2 library包含为<script>

然后你可以有类似的东西:

(function ($) {

    jQuery.fn.jsonSerialize = function () {
        var obj = {};
        var form = this[0];

        if (form.tagName !== "FORM") {
            return "";
        }

        $(form.elements).each(function () {
            obj[this.name] = $(this).val();
        });

        return JSON.stringify(obj);
    }

}(jQuery));

然后使用如下:

var stringified = $('#yourForm').jsonSerialize();