2011-11-25 45 views
7

我已經創建了一個像這樣的var detailsArr = new Array();的JS數組,並將一些數據推送到這個數組中。如何在Ajax中發送js數組

現在我推通過Ajax這個數組我的春節控制器這樣

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

在春天控制器方面,我收到過@RequestBody註解這個數組。春季控制器方法簽名看起來像這樣

public String submit(@RequestBody String body) 

但是,當在春季控制器側接收的陣列基本上是這種格式的字符串

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

我必須手動拆分此字符串來獲取值這是一個麻煩的過程。有沒有什麼辦法可以讓數組保持原樣,所以我只需要遍歷它就可以獲取值。

+1

請從您的春天控制器添加方法簽名(有註釋)和detailsArr'的'轉儲('console.log'它或者類似的東西) – 2011-11-25 07:04:26

+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

感謝ton @ erimerturk! :) – Vivek

5

當它傳遞給控制器​​,通過這樣的:

data:JSON.stringify(detailsArr); 

在你的控制,那麼你可以解碼JSON好評。

+0

謝謝一噸xbonez! :) – Vivek

+0

@Vivek:很高興幫助 – xbonez