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 @   webmtjj  阅读(364)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示