2011-11-25 49 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