0

入力からデータを取得して投稿するより良い方法があるかどうか疑問に思いました。私はここにうまく機能するこのコードを持っていますが、それを合理化するためにそれを使ってもっと良いことができるかどうか知りたいだけです。

$('#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();
});
4

2 に答える 2

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();
});
于 2012-09-25T18:56:52.983 に答える
0

フォーム内に入力要素がない場合は、次のコードも試してください。

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

' serialize '関数では、フォーム内の入力フィールドのみを取得できますが、この要素内の入力要素の値を取得する場合は、次を使用します。

(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()
于 2012-09-25T19:16:37.283 に答える