HTMLテーブルに存在するデータをJSONに変換して、サーバー側で適切に処理できるようにしようとしています。データをシリアル化することはできますが、結果はせいぜい、直接リンクされていない別個のデータ配列を生成します。のように:これは私が使用しているフォームです:
<form id="nameGenderForm">
<table id="nameGenderTable">
<tr>
<th >Name</th>
<th >Gender</th>
</tr>
<tr>
<td><input type="text" name="studentName"></td>
<td>
<select name="studentGender">
<option value="male">male</option>
<option value="female">female</option>
</select>
</td>
</tr>
<tr>
<td><input type="text" name="studentName"></td>
<td>
<select name="studentGender">
<option value="male">male</option>
<option value="female">female</option>
</select>
</td>
</tr>
</table>
<input type="submit" />
</form>
データをシリアル化するためのスクリプトは次のとおりです。
$("#nameGenderForm").submit(function(event){
event.preventDefault();
var rawData=$('#nameGenderForm').serializeFormJSON();
var formData=JSON.stringify(rawData);
console.log(formData);
});
serializeFormJSON()は、StackOverFlowの数ページを通過した後に得たものです。
(function($) {
$.fn.serializeFormJSON = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
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;
};
})(jQuery);
これらすべてを使用することで、次のようなJSONを取得できます。
{"studentName":["kenpachi","orihime"],"studentGender":["male","female"]}
名前と性別の形式でそれらを取得するために多くの方法を試しましたが、どの方法でも同じ結果が得られます。2つの異なる配列。それぞれにフォームを使用しても役に立ちませんでした。次のようにname-gender配列のデータを取得する方法はありますか?
{"studentName":"kenpachi","studentGender":"male"},{"studentName":"orihime","studentGender":"female"}
お知らせ下さい。