2

フォームデータをjsonデータに変換しています。これが私のコードです:

  $.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;
};

$(function() {
    $('form').submit(function() {

        $('#result').append(JSON.stringify($('form').serializeObject()));

        return false;
    });
});

上記のコードは、次の json 文字列を提供します。

  {"TypeName":["type1","type2"],"rate":["23","24"],"no:ofTickets":["23","24"],"allowedMembers": ["member1","member2"]}   

しかし、私の必要性は、次のようなjsonを取得することです:

   {[
    {"TypeName":"type1","rate":"23","no:ofTickets":"23","allowedMembers":"member1"},
    {"TypeName":"type2","rate":"34","no:ofTickets":"56","allowedMembers":"member2"}
]}

どうすれば問題を解決できますか??

ありがとう

4

3 に答える 3

1

serializeArrayはすでにそれを正確に行っています。データを必要な形式に変換するだけです。

$.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;
};
于 2013-11-09T11:50:02.243 に答える
0
$.fn.serializeObject = function()
{
    var elements = []; // Define an empty array
    var o = {};
    var a = this.serializeArray();

    $.each(a, function() {
       ...

       elements.push(o); // Store your objects into the array
    });

    return elements; // return the array
}

作業例http://fiddle.jshell.net/f8Zkr/

于 2013-11-09T11:43:24.330 に答える
0

searialzieObject 関数を次のように変更します。

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

        }
        o.push(new_dict);
    });
    return o;
};
于 2013-11-09T11:44:13.167 に答える