如何在Ajax中发送js数组

Viv*_*vek 10 javascript jquery json spring-mvc

我创建了一个像这样的JS数组var detailsArr = new Array();并将一些数据推送到这个数组中.

现在我通过Ajax将这个数组推送到我的Spring Controller中

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

在Spring Controller端,我通过@RequestBody注释接收这个数组.Spring Controller方法签名如下所示

public String submit(@RequestBody String body) 
Run Code Online (Sandbox Code Playgroud)

但是在Spring Controller端收到的数组基本上是这种格式的String

detailsArr[]=add&detailsArr[]=test1&detailsArr[]=test2&detailsArr[]=test3
Run Code Online (Sandbox Code Playgroud)

我必须手动拆分此String以获取值,这是一个繁琐的过程.有没有什么方法可以让我得到数组,所以我只需要迭代它来获取值.

eri*_*urk 9

你应该以json格式将数组传递给服务器.并使用Json转换为对象转换器.你可以使用Gson.

客户端:

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

服务器端 :

public String submit(@RequestBody String body){
//convert body to array using JSONLib, FlexJSON or Gson
}
Run Code Online (Sandbox Code Playgroud)


xbo*_*nez 6

将它传递给控制器​​时,传递方式如下:

data:JSON.stringify(detailsArr);
Run Code Online (Sandbox Code Playgroud)

在您的控制器上,您可以解码收到的JSON.