1. ホーム
  2. javascript

[解決済み] JQuery $.ajax() post - java servletのデータ

2022-03-05 15:37:45

質問

データをJavaサーブレットに送信して処理させたい。 データは可変長で、キーと値のペアで構成される。

{ A1984 : 1, A9873 : 5, A1674 : 2, A8724 : 1, A3574 : 3, A1165 : 5 }

データはこのようにフォーマットする必要はなく、私が今持っている方法です。

var saveData = $.ajax({
      type: "POST",
      url: "someaction.do?action=saveData",
      data: myDataVar.toString(),
      dataType: "text",
      success: function(resultData){
          alert("Save Complete");
      }
});
saveData.error(function() { alert("Something went wrong"); });

$.ajax() 関数は正常に動作し、quot;Save Complete"のアラートを受け取ることができます。私のジレンマはサーブレットにあります。 どのようにデータを取得するのでしょうか? HashMapを使おうとしたのですが...。

HashMap hm = new HashMap();
hm.putAll(request.getParameterMap());

...が hm はNULLであることが判明しました。 .getParameterMap() は、キーと値のペアを見つけられないのです。どこで間違えているのか、何を見逃しているのか?

解決方法は?

文字列ではなく、キーと値のペアのJSマップが必要なのです。例えば、change。

 data: myDataVar.toString(),

を使っています。

var myKeyVals = { A1984 : 1, A9873 : 5, A1674 : 2, A8724 : 1, A3574 : 3, A1165 : 5 }



var saveData = $.ajax({
      type: 'POST',
      url: "someaction.do?action=saveData",
      data: myKeyVals,
      dataType: "text",
      success: function(resultData) { alert("Save Complete") }
});
saveData.error(function() { alert("Something went wrong"); });

jQueryはこのようなキーと値のペアを理解しますが、大きな文字列を理解することはできません。単に文字列として渡します。

UPDATEしてください。 コードを修正しました。