How to send js array in Ajax

2020-03-12 11:03发布

问题:

I have created a JS array like this var detailsArr = new Array(); and pushing some data into this array.

Now i push this array via Ajax to my Spring Controller like this

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

At the Spring Controller side , i receive this array through the @RequestBody annotation. The Spring Controller method signature looks like this

public String submit(@RequestBody String body) 

But the array when received at the Spring Controller side is basically a String of this format

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

I have to manually split this String to get the values, this is a cumbersome process. Is there any way in which I can get the array as it is , so that I just have to iterate over it to get the values.

回答1:

you should pass your array to server in json format. And convert it by using Json to object converter. you can use Gson.

client side:

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

server side :

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


回答2:

When passing it to your controller, pass it like this:

data:JSON.stringify(detailsArr);

At your controller, you can then decode the JSON received.