从表单获取数据,然后使用Jquery发布

时间:2012-09-25 18:55:32

标签: jquery

我想知道是否有更好的方法从输入中获取数据然后发布它们。我在这里有这个代码工作正常,但我只想知道是否有更好的东西,我可以用它来简化它。

$('#Subscription').submit(function(e){
    var url = $(this).attr('action'),
        1 = $('input[name=1]').val(),
        2 = $('input[name=2]').val(),
        3 = $('input[name=3]').val(),
        4 = $('input[name=4]').val(),
        5 = $('input[name=5]').val(),
        6 = $('input[name=6]').val(),

    $.post(url, { 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6 }, function (data) {
        // Do something after post
    });

    e.preventDefault();
});

2 个答案:

答案 0 :(得分:2)

试试这个http://api.jquery.com/serialize/

示例:

$('#Subscription').submit(function(e){
    var url = $(this).attr('action'),
    var formData= $(this).serialize();

    $.post(url, data:formData, function (data) {
        // Do something after post
    });

    e.preventDefault();
});

答案 1 :(得分:0)

如果输入元素不在表单内,也可以尝试以下代码。

<div id="form_clone">
    <input name="name" />
    <input name="id" />
    <input name="contact_details" />
    <input name="info" />
</div>

'序列化'函数只允许获取表单中的输入字段,但如果要获取此元素中输入元素的值,请使用:

(function($) {

    $.fn.serializeAnything = function() {

        var toReturn    = [];
        var els         = $(this).find(':input').get();

        $.each(els, function() {
            if (this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type))) {
                var val = $(this).val();
                toReturn.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( val ) );
            }
        });

        return toReturn.join("&").replace(/%20/g, "+");

    }

})(jQuery);

用法:

$('#form_clone').serializeAnything()