2011-11-25 10 views
7

私はこのようなJS配列を作成しました。var detailsArr = new Array();といくつかのデータをこの配列にプッシュします。Ajaxでjs配列を送信する方法

は、今私は春コントローラ側では、この

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

ように私の春のコントローラにAjaxを介して、この配列をプッシュし、私は@RequestBody、アノテーションによって、この配列を受け取ります。スプリングコントローラメソッドのシグネチャは、この

public String submit(@RequestBody String body) 

ように見えるがスプリングコントローラ側で受信アレイは、基本的に、私は手動で値を取得するために、この文字列を分割する必要があり、この形式の文字列

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

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

+1

あなたのスプリング(注釈付き)コントローラと 'detailsArr'('それをconsole.log'のダンプからメソッドシグネチャを追加してください。またはそのようなもの) –

+0

私のSpringコントローラの署名はこのようになります 'public String submit(@RequestBody String body)'とdetailsArrのダンプは次のようになります 'detailsArr [] = add&detailsArr [] = test1&detailsArr [] =テスト2& DetailsArr [] = test3' – Vivek

+0

リクエストボディを読んだら、jsonで書式設定された文字列を取得してから、JsonUtilを書いたり使用したりして、jsonの文字列をクラスに変換する必要があります(配列またはあなたが書いたものです) – erimerturk

答えて

7

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 
} 
+0

ありがとう、トン@erimerturk !! :) – Vivek

5

あなたのコントローラに渡す、このようにそれを渡します

data:JSON.stringify(detailsArr); 

をお使いのコントローラでは、あなたがしてJSONを受信デコードすることができます。

+0

トンxbonezに感謝!! :) – Vivek

+0

@Vivek:助けてうれしい – xbonez

関連する問題