前台发送 ajax 请求到后台传递数组参数

web项目开发中,我们经常会遇到需要向后台传递一个数组的情况,主要有两种形式,一种是传递简单的字符数组,另一种就是传递一个对象数组,以下是针对这两种情况的处理方式。

传递字符数组

jQuery.ajax向后台传递一个字符数组,需要设置 traditional: true,后台用 String[] arr 就可以接收到了

var arr = ["a", "b", "c"];
$.ajax({
    url: "save",
    type: "post",
    dataType: "json",
    traditional: true,//加上这个属性,后台用 String[] arr 就可以接收到了
    data: {
        "arr": arr
    },
    success: function (data) {
        //...
    }
});

传递对象数组

jQuery.ajax向后台传递一个对象数组,需要使用JSON.stringify() 把json对象数组转成json字符串传到后台,在后台使用 JSONArray jsonArray = JSONArray.fromObject(jsonObjArr); 把前台传递过来的json字符串解析成 jsonArray,然后可以遍历 jsonArray 即可得到数组中的每一个对象。

//定义json对象数组
var jsonObjArr = [
  {
    "id": "1",
    "name": "菜鸟教程",
    "url": "www.runoob.com"
  },
  {
    "id": "2",
    "name": "菜鸟工具",
    "url": "c.runoob.com"
  },
  {
    "id": "3",
    "name": "Google",
    "url": "www.google.com"
  }
];

//使用JSON.stringify() 把json对象数组转成json字符串传到后台
$.ajax({
     url: "save",
     type: "post",
     dataType: "json",
     data: {
         "jsonObjArr": JSON.stringify(jsonObjArr)  //转成json字符串传到后台,后台用 String jsonObjArr 字符串接收
     },
     success: function (data) {
         //...
     }
 });

//后台处理前台传递过来的 String jsonObjArr 字符串
JSONArray jsonArray = JSONArray.fromObject(jsonObjArr);
for(int i=0;i<jsonArray.size();i++){
	JSONObject jsonObject = jsonArray.getJSONObject(i);		//得到数组中的单个对象
	String id = jsonObject.get("id").toString();
	String name = jsonObject.get("name").toString();
	String url = jsonObject.get("url").toString();
	System.out.println("id:"+id+"name:"+name+"url:"+url);
}

当然前端传递简单的字符数组,也可以按传递对象数组的方式来处理,只是在后台处理的时候应该这样写:

JSONArray jsonArray = JSONArray.fromObject(jsonObjArr);
for(int i=0;i<jsonArray.size();i++){
	String attr = jsonArray.get(i).toString();		//此时 jsonArray.get(i)得到的不再是JSONObject,而是简单的字符元素
}

猜你喜欢

转载自blog.csdn.net/qq_34125981/article/details/89334139