1

HTML フォームはセクションに分かれています。セクションには入力フィールドがあります。以下のコードのように、フォームデータを JSON 形式で送信するとすぐに。コントローラは、フォーム データを 1 次元配列として受け取ります。
フォームデータを二次元配列として送信する方法はありますか? section-name には、フィールドの名前と値のペアの配列が入ります。

$('form').submit(function () {
                    alert('here');
                    $.ajax({
                        url: $(this).attr('action'),
                        type: 'POST',
                        data: JSON.stringify($(this).serializeArray()),
                        contentType: 'application/json',
                        success: function (data) {
                            alert('data')
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            alert('An error has occured!! :-(')
                        }
                    });

                    return false;
                })
            });
4

1 に答える 1

1

.serializeArray()ありますが、 ;ではできません。jQuery を使用して DOM をウォークし、データを希望どおりにフォーマットされた配列にアセンブルし、それをdataパラメータの値として に渡す必要があります.ajax()。次の不自然な例を考えてみましょう:

<form>

  <div class="section">
    <span class="section_title">Section 1</span>
    <input name="this" type="text" value="this" />
    <input name="that" type="text" value="is" />
  </div>

  <div class="section">
    <span class="section_title">Section 2</span>
    <input name="these" type="text" value="rather" />
    <input name="those" type="text" value="contrived" />
  </div>

</form>

次の Javascript コードを使用して実行できます。

var formdata = {};
$('form').find('div.section')
    .each(function(i, el) {
        var sectionTitle = $(el)
            .find('span.section_title')
            .text();
        $(el).find('input')
            .each(function(i, el) {
                var name  = $(el).attr('name');
                var value = $(el).val();
                formdata[sectionTitle][name] = [value];
            });
    });

の結果は次のformdataようになります。

{'Section 1': {'this': 'this',
               'that': 'is'},
 'Section 2': {'these': 'rather',
               'those': 'contrived'}}

もちろん、あなたの状況に合わせたものではありませんが、アイデアを得るのに十分近いはずです。そうでない場合は、お気軽にコメントして説明を求めてください。それを提供するために最善を尽くします. (ちなみに、あなたの質問で、あなたが使用しているフォームの HTML の例を示すと、あなたの状況により近い解決策を提供できるようになります。)

于 2013-07-24T14:26:16.063 に答える