springmvc 前端 发ajax请求的几种方式
2016-02-26 16:06
429 查看
一.传json单值或对象
1.前端
2.后端
二.json对象转成字符串后传值
1.1、前端
1.2、后端
三.将对象JSON.stringify后,以第一种方式传递,可实现对象中存对象 {'userList':users,'key1':value1}
1.前台
2.后台
传数组
前台
后台
总结:1.如果用JSON.stringify()将对象转成字符串,就需要在ajax请求中指定contentType 为 application/json,且后台需添加 @RequestBody注解;
2.如果直接传json对象则跟上面的相反,不能指定contentType为 application/json,其默认类型是 application/x-www-form-urlencoded
1.前端
var data = {'id':id,'name':name}; $.ajax({ type:"POST", url:"user/saveUser", dataType:"json", //contentType:"application/json", //不能添加这个头 data:data, //这里不能进行JSON.stringify,发送请求的数据在:form data success:function(data){ } });
2.后端
//看成单值 @RequestMapping(value = "save", method = {RequestMethod.POST }}) @ResponseBody public void save(@RequestParam int id,String name) { //这里字段要跟前端一致,@RequsetParam 可以不加,默认调用的就是它 } //看成对象 @RequestMapping(value = "save", method = {RequestMethod.POST }}) @ResponseBody public void save(User user) { //前端字段跟对象属性一致 //自动转化成改对象 }
二.json对象转成字符串后传值
1.1、前端
$.ajax({ type:"POST", url:"user/saveUser", dataType:"json", contentType:"application/json", //需添加这个头 data:JSON.stringify(data), //发送请求的数据在request payload success:function(data){ } });
1.2、后端
//看成对象 @RequestMapping(value = "save", method = {RequestMethod.POST }}) @ResponseBody public void save(@RequestBody User user) { //需添加RequestBody注解 //自动转化成改对象 }
三.将对象JSON.stringify后,以第一种方式传递,可实现对象中存对象 {'userList':users,'key1':value1}
1.前台
var user = {'id':id,'name':name}; var jsonStrGoods = JSON.stringify({'gid':gid,...}); $.ajax({ type:"POST", url:"user/saveUser", dataType:"json", // contentType:"application/json", //不添加这个头 data:{'user':JSON.stringify(user),'goods':jsonStrGoods }, //发送请求的数据在request payload success:function(data){ } });
2.后台
//看成单值 @RequestMapping(value = "save", method = {RequestMethod.POST }}) @ResponseBody public void save(@RequestParam String user,String goods) { //这里字段要跟前端一致,@RequsetParam 可以不加,默认调用的就是它 User u= JSON.parseObject(user, User .class);//alibaba.fastjson转换成对象 } //看成对象 @RequestMapping(value = "save", method = {RequestMethod.POST }}) @ResponseBody public void save(UserAndGoods ug) { //没试过,猜测应该是这样,前端字段跟对象属性一致 //自动转化成改对象 }
传数组
前台
var arr = str.split(','); $.ajax({ url:'/appollo-console/manage/user/names/validation', data:{ names:arr }, traditional: true,//必须 type:'post', dataType:'json', success:function(res){ alert(res); } })
后台
@PostMapping("/names/validation") @ResponseBody public List<String> validateUserName(String[] names){ List<String> notValidNames = Lists.newArrayList(); notValidNames = userService.findNotValidNames(Arrays.asList(names)); return notValidNames; }
总结:1.如果用JSON.stringify()将对象转成字符串,就需要在ajax请求中指定contentType 为 application/json,且后台需添加 @RequestBody注解;
2.如果直接传json对象则跟上面的相反,不能指定contentType为 application/json,其默认类型是 application/x-www-form-urlencoded
相关文章推荐
- java设计模式:迭代器模式 iterator
- spring security原理简单总结
- java web应用程序目录
- 函数和数组
- 归纳决策树ID3(Java实现)
- 对Java中PermGen space的概念认识
- 关于springmvc重定向如何携带参数的问题
- JAVA读取文本.XML等文件
- myeclipse更新完项目之后,JS以及JSP文件会报错
- MyEclipse10 中安装Activiti插件后,新建Activiti项目无Maven功能
- [转] Spring注解@Component、@Repository、@Service、@Controller区别
- JAVA EE环境搭建
- Spring声明式事务配置管理方法
- java,for循环嵌套,打印菱形
- SpringMVC源码解析- HandlerAdapter初始化
- spring mvc 文件、图片上传(极简)ajaxFileUpload
- java多线程并发去调用一个类的静态方法安全性探讨
- Eclipse 中java build path面板的功能梳理
- java web笔记
- 深入分析Java的序列化与反序列化