回答編集履歴

2

別解を追加

2018/03/11 05:23

投稿

defghi1977
defghi1977

スコア4756

test CHANGED
@@ -1,6 +1,10 @@
1
1
  `input`要素の抽出やJSONの生成まで自作するのはテストがしんどい気がします.
2
2
 
3
3
  なので, `form`要素を使った代替案を考えました.
4
+
5
+
6
+
7
+ 対処策・その1
4
8
 
5
9
 
6
10
 
@@ -89,3 +93,41 @@
89
93
  NOTE:
90
94
 
91
95
  とは言え, `name`属性のとり方(誤った重複)などによってはうまく動きません.
96
+
97
+
98
+
99
+ ---
100
+
101
+
102
+
103
+ 対処策・その2
104
+
105
+
106
+
107
+ jQueryの`serializeArray`メソッドを使う方法もあるようです.
108
+
109
+
110
+
111
+ 参考:
112
+
113
+ [https://stackoverflow.com/questions/22195065/how-to-send-a-json-object-using-html-form-data](https://stackoverflow.com/questions/22195065/how-to-send-a-json-object-using-html-form-data)
114
+
115
+
116
+
117
+ ```JavaScript
118
+
119
+ var formData = JSON.stringify($("#search_detail_panel").serializeArray());
120
+
121
+ console.log(formData);
122
+
123
+ ```
124
+
125
+ これを実行すると次のようなJSONが得られます.
126
+
127
+ ```JSON
128
+
129
+ [{"name":"panel_16","value":"3000"},{"name":"panel_17","value":"1"}]
130
+
131
+ ```
132
+
133
+ 最終的なJSONの形状があなたの求めている形と異なりますが, ここまでくれば後はデータの加工だけで済むでしょう.

1

何をするコードなのかについての補足を追加

2018/03/11 05:23

投稿

defghi1977
defghi1977

スコア4756

test CHANGED
@@ -1,8 +1,12 @@
1
1
  `input`要素の抽出やJSONの生成まで自作するのはテストがしんどい気がします.
2
+
3
+ なので, `form`要素を使った代替案を考えました.
2
4
 
3
5
 
4
6
 
7
+ 下記では`form`要素の「フォームデータ」(つまり, あるノードに含まれる`input`要素群の状態)をJSON化しています.
8
+
5
- なので, `form`要素を使った代替案を考えました. (同名のラジオボタンを単一の`RadioNodeList`オブジェクトに勝手にまとめてくれるので処理がシンプル)
9
+ (同名のラジオボタンを単一の`RadioNodeList`オブジェクトに勝手にまとめてくれるので処理がシンプル)
6
10
 
7
11
 
8
12