Live2D

JQuery 传递数组到后台后台 后台接收不到参数

 

//创建数组
var ids = [];
ids .push(1);
ids .push(2);
ids .push(3);
//向后台交互
$.ajax({
  url: "/xxx",
  type: "POST",
  data: {
    "ids ": ids 
  },
  success: function(data) {
    //do sth...
  }
});

后台接口

 public ActionResult Test(Array ids) { }

浏览器ajax请求参数成为了  ids[]

 

 

在ajax请求添加‘traditional: true’   

默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架, 
但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化,

//创建数组
var ids = [];
ids .push(1);
ids .push(2);
ids .push(3);
//向后台交互
$.ajax({
  url: "/xxx",
  type: "POST",
  data: {
    "ids ": ids 
  },
  traditional: true,//这里设置为true
  success: function(data) {
    //do sth...
  }
});

此时查看ajax请求参数,就是想要实现的效果了

 但有时加上‘traditional: true’   也还是不可以

利用JSON.stringify()方法将传入数组转成json格式,再配置请求头,Content-Type: application/json 就可以解决了

//创建数组
var ids = [];
ids .push(1);
ids .push(2);
ids .push(3);
//向后台交互
$.ajax({
  url: "/xxx",
  type: "POST",
  headers: {
     "Content-Type": "application/json"
  },         
 data: JSON.stringify(ids),
  traditional: true,//这里设置为true
  success: function(data) {
    //do sth...
  }
});

 

posted @ 2022-04-21 09:51  webmtjj  阅读(374)  评论(0)    收藏  举报