QA@IT

JavaScriptの配列パラメータをサーバに渡す方法

4385 PV

すみません。

画面上で下記のような縦が可変のリストの入力フォームがあり、

 +----+------+---------+
 | id | memo | detail |
 +----+------+---------+
 | 1 |  AA  |    34    |
 | 2 |  BB  |    50    |
 | 3 |  CC  |    95    |
 +----+------+---------+

登録ボタンを押すと、サーバ側に非同期通信で登録処理をするプログラムを作ろうとしています。
JavaScriptで配列のデータを渡す時

        var prm = {
            id_1: $("#id_1").val(),
            id_2: $("#id_2").val(),
            id_3: $("#id_3").val(),
            memo_1: $("#memo_1").val(),
            memo_2: $("#memo_2").val(),
            memo_3: $("#memo_3").val(),
            detail_1: $("#detail_1").val(),
            detail_2: $("#detail_2").val(),
            detail_3: $("#detail_3").val()
        };
        $('#aspnetForm').iPostForm('edit.ashx', prm)

このようにすれば値は渡せれるようなのですが、下記のようなイメージでJavaScriptを組むようなことって可能でしょうか。

        var prm = {
            for(i = 1; i < max; i++){
                eval("id_" + i): $("#id_" + i).val(),
                eval("memo_" + i): $("#memo_" + i).val(),
                eval("detail_" + i): $("#detail_" + i).val(),
            }
            service: "1"
        };
        $('#aspnetForm').iPostForm('edit.ashx', prm)

このままだとエラーが出てしまうので、プロパティを使う配列でループ処理ができる組み方があればいいのですが…
もしわかればご教授願います。

回答

prm[プロパティ名]=[値]

でプロパティを追加できますので、こんなかんじで実装できると思います。(動かしてませんが)

 var prm = {service: "1"};

 var propname;
 for(i = 1; i < max; i++){
      propname = "id_"+i;
   prm[propname]=$("#id_" + i).val();
   ・・・
 }

なお、可変の値を扱うのであれば値を配列にする方法も取れます。

var prm = {
            id:[1,2,3],
            memo:["AA","BB","CC]
           };
編集 履歴 (1)
  • ありがとうございます。無事に値が取れましたm(_ _)m -
ウォッチ

この質問への回答やコメントをメールでお知らせします。