0

私は次のフォームを持っています:

<form id="form">
<input type="checkbox" name="numbers" value="1">
<select name="ordering[numbers]">
    <option value="ASC">Ascend</option>
    <option value="DESC">Descend</option>
</select><br>
<input type="checkbox" name="added_date" value="1"> Call date 
<select name="ordering[added_date]">
    <option value="ASC">Ascend</option>
    <option value="DESC">Descend</option>
</select>
</form>

基本的に、フォームを送信する前にすべてのデータをJSONオブジェクトに保存する必要があります。これを、jQuery.serializeArray()関数を使用しているform_jsonと呼びましょう。

var form_json = $("#form").serializeArray();

両方のチェックボックスがオンになっている場合、次のオブジェクトを取得します。

[
    {"name": "numbers", "value": "1"},
    {"name": "ordering[numbers]", "value": "ASC"},
    {"name": "added_date","value":"1"},
    {"name": "ordering[added_date]", "value": "ASC"}
]

それは私が期待していたことではありません。どういうわけか次のフォーマットが欲しい:

[
    {"name": "numbers","value": "1"},
    {"name": "added_date","value": "1"},
    {"name": "ordering", "value": {
            "numbers": "ASC",
            "added_date": "ASC"}
    }  
]

それは可能ですか?ありがとう!

4

1 に答える 1

1

.serializeArray() がその構造を作成するかどうかはわかりません。フォームの残りの部分を追加する必要がありますが、これでより近づくことができます。

http://jsfiddle.net/YSEZt/2/

var ordering = {"name" : "ordering", "values" : {}};
ordering.values[$("select[name='ordering[numbers]']").prop('name')] =   $("select[name='ordering[numbers]']").val();    
ordering.values[$("select[name='ordering[added_date]']").prop('name')] =      $("select[name='ordering[added_date]']").val();
console.log(ordering)​
于 2012-04-17T14:22:15.337 に答える