Ajaxでjs配列を送信する方法

私はこの var detailsArr = new Array(); のようなJS配列を作成し、この配列にデータをプッシュします。

今、この配列をAjax経由でSpring Controllerにプッシュします。

$.ajax({
            type: "POST",
            url: "submit",
            data: ({detailsArr : detailsArr }),
            success: function(html){
              alert( "Submitted");
                }
          });

Spring Controller側では、この配列を @RequestBody アノテーションで受け取ります。 Spring Controllerメソッドのシグネチャは次のようになります

public String submit(@RequestBody String body) 

しかし、Spring Controller側で受け取ったときの配列は基本的にこの形式のStringです

detailsArr[]=add&detailsArr[]=test1&detailsArr[]=test2&detailsArr[]=test3

私は手動で値を取得するためにこの文字列を分割する必要があり、これは面倒なプロセスです。私はそれが値を取得するためにそれを反復処理する必要があるように、私は配列を得ることができる方法はありますか?

7
あなたがリクエストボディを読み込んだら、jsonでフォーマットされた文字列を取得し、次に、JsonUtilを書いたり使用したりしてjsonの文字列をクラスに変換する必要があります(配列か、
追加された 著者 erimerturk,
Springのコントローラから(アノテーション付きで)メソッドのシグネチャを追加し、 detailsArr console.log
追加された 著者 user180100,
私のSpringコントローラのシグネチャは次のようになります:detailsArr [] = add&detailsArr [] = test1&detailsArr [] = test2&detai&zwnjこのように、 public String submit(@RequestBody String body) ; lsArr [] = test3
追加された 著者 Vivek,
しかし、私が得ているString形式はJSONで書式設定されていないようですが、これについてはわかりませんが...。
追加された 著者 Vivek,

2 答え

配列をjson形式でサーバーに渡す必要があります。そしてJsonを使ってオブジェクトコンバータに変換します。 Gson を使用できます。

クライアント側:

$.ajax({
            type: "POST",
            url: "submit",
            data:JSON.stringify(detailsArr),
            success: function(html){
              alert( "Submitted");
                }
          });

サーバ側 :

public String submit(@RequestBody String body){
//convert body to array using JSONLib, FlexJSON or Gson
}
7
追加された
ありがとう、トン@erimerturk! :)
追加された 著者 Vivek,

コントローラに渡すときは、次のように渡します:

data:JSON.stringify(detailsArr);

あなたのコントローラで、受け取ったJSONをデコードすることができます。

5
追加された
@Vivek:助けてうれしい
追加された 著者 xbonez,
おかげでトンxbonez! :)
追加された 著者 Vivek,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript