3

次の形式を考えます。

<form class="email-form" action="" method="PUT" data-remote="true" data-method="put">
  <ul>
    <li>
      <label for="sEmail1">
        <input type="text" id="sEmail1" name="emails[]" value="d@google.com"
               placeholder="">
      </label>
    </li>
    <li>
      <label for="sEmail2">
        <input type="text" id="sEmail2" name="emails[]" value="d2@google.com"
               placeholder="">
      </label>
    </li>
    <li>
      <label for="sEmail3">
        <input type="text" id="sEmail3" name="emails[]" value="d3@google.com"
               placeholder="">
      </label>
    </li>
  </ul>
  <button type="submit">Continue</button>
</form>

クエリを使用してメールの完全なリストを取得し、次のようにレールに投稿するにはどうすればよいですか。

Parameters: {"emails"=>{"list"=>["d@google.com", "d2@google.com","d2@google.com"]}}

私は次のものを持っています:

    $.ajax({
        type: 'POST',
        url: '/send_invites',
        data: {
            emails : {
                list : $('.email-form').serialize()
            },
            _method : 'PUT'
        },
        success : function() {
        }
    });
4

3 に答える 3

0

これを試して:

emails = new Object();
emails.list = [];
i = 0;

$("input[name^='email']").each(function(){
   if(i < 3) {
    emails.list[i] = $(this).val();
    i++
  }

})

alert(JSON.stringify(emails));  

また:

parameters = new Object();
parameters.emails = new Object()
parameters.emails.list= [];
i = 0;

$("input[name^='email']").each(function(){
   if(i < 3) {
    parameters.emails.list[i] = $(this).val();
    i++
  }

})

alert(JSON.stringify(parameters));   

http://jsfiddle.net/jgjpD/1/

于 2012-04-20T23:05:46.010 に答える
0

ここにそれを行う方法があります

var listval = [];
$("input['name=emails\[\]']").each(function() {
    listval.push($(this).val());
}
于 2012-04-20T23:17:58.663 に答える
0

jQuery を拡張してserializeObjectメソッドを追加することにより、フォームをシリアル化する簡単な方法を次に示します。

$(function() {

    //form to object
    $.fn.serializeObject = function() {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name] !== undefined) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };

    //test it out
    $('form').on('submit', function() {
        var serialized = $(this).serializeObject();

        console.log(serialized);
        console.log(JSON.stringify(serialized));

        return false;
    });

});​
于 2012-04-20T23:15:41.230 に答える