ajax 发送json 后台接收 遍历保存进数据库
前台怎么拿参数的我就不管了我也不会
反正用这个ajax没错
ajax 代码 一定要写明http请求类型 {
contentType:"application/x-www-form-urlencoded; charset=utf-8",
}这一段很重要(就是因为这个原因我找了整整一下午)
服务器为什么会对表单提交和文件上传做特殊处理,因为表单提交数据是名值对的方式,且Content-Type为application/x-www-form-urlencoded,
而文件上传服务器需要特殊处理,普通的post请求(Content-Type不是application/x-www-form-urlencoded)数据格式不固定,
不一定是名值对的方式,所以服务器无法知道具体的处理方式,所以只能通过获取原始数据流的方式来进行解析。
jquery在执行post请求时,会设置Content-Type为application/x-www-form-urlencoded,所以服务器能够正确解析,
而使用原生ajax请求时,如果不显示的设置Content-Type,那么默认是text/plain,这时服务器就不知道怎么解析数据了,
所以才只能通过获取原始数据流的方式来进行解析请求数据。
 function orderFood(){
         alert("进来了++++++++++");
      final_settle();
      /* alert("http://192.168.10.98:8080/jeesite/f/cms/received/submit"); */
       console.log(JSON.stringify(globalJsonArray));
       $.ajax({
           type : "post",
           url : "/jeesite/f/received/submit",
           dataType:"json",
           contentType:"application/x-www-form-urlencoded; charset=utf-8",
           data:{orderInfo:jsonStr},//JSON.stringify(globalJsonArray),
           success : function(result) {
             alert(result.msg);
           }
         });
    }
后面接收的代码 写好方法名称还有请求类型
@Controller
@RequestMapping(value = "${frontPath}/received")
public class FrontReceivedata extends BaseController{ @RequestMapping(value = "submit",method =RequestMethod.POST)
public String submit(HttpServletRequest request,HttpServletResponse response){
String week = request.getParameter("orderInfo");
System.out.println("=====================================");
System.out.println("requestJson:"+week);
System.out.println("=====================================");
定几个全局变量 然后吧json转换成JSONObjcet格式(可以百度下格式)for循环下得到相应的值
最好加个判空的if
获取到了值放进那张表里保存的方法里面
for(int i = ;i<jsonArray.size(); i++){
                     //转换
                    //JSONObject list = jsonArray.getJSONObject(i);
                    JSONObject list =  (JSONObject) jsonArray.get(i);
                    //各变量的if(){}
                    //测试值  S
                    System.out.println("orderList:"+orderList);
                    System.out.println("allpriice:"+allpriice);
                    System.out.println("num:"+num);
                    //判断为空
                    if(list.get("orderlist")!= null){
                        orderList =  (JSONArray)list.get("orderlist");
                    }
                    if(list.get("allpriice") != null){
                        allpriice =  (String)list.get("allpriice");
                    }
                    if(list.get("num") != null){
                        num = (String)list.get("num");
                    }
                 }
                 //把数据放进保存方法里面
                 WOrder worder = new WOrder();
                 String a="WXDC";   //订单号前缀
                 Date dt= new Date();
                 Long time= dt.getTime();//这就是距离1970年1月1日0点0分0秒的毫秒数
                 String SingleNumber=a+time;  //完整订单号
                 worder.setCid(SingleNumber); //订单号
                 worder.setAmount(allpriice);//总金额
                 worder.setOrderNumber(num);//桌号
                 Worderservice.save(worder);
如果json里面有多个字段 就用两个for循环 循环出来 然后保存进指定的数据库表里
 if(orderList.size()!=){
                    for(int j= ;j<orderList.size();j++){
                        JSONObject orderInfo =  (JSONObject) orderList.get(j);
                        //判断为空
                        if(orderInfo.get("number") != null){
                            number =  (String)orderInfo.get("number");
                        }
                        if(orderInfo.get("foodid") != null){
                            foodid =  (String)orderInfo.get("foodid");
                        }
                        System.out.println("number+++:"+number);
                        System.out.println("fooddid+++:"+foodid);
                        //数据保存方法
                        WChildorder wchildorder = new WChildorder();
                        wchildorder.setOid(SingleNumber);  //订单号
                        wchildorder.setNumber(number);//分量
                        wchildorder.setDid(foodid);//菜的id
                        wchiservice.save(wchildorder);
                    }
                }
最好抛个异常 让前台判断 返回的是一个map 不过返回的map 方法上面需要加@ResponseBody这个注释
 result.put("result", "保存成功");
                result.put("code", "");
                result.put("SingleNumber", SingleNumber);
            } catch (Exception e) {
                e.printStackTrace();
                result.put("result", "保存失败");
                result.put("code", "");
            }
             //返回的
             return result;
         }
         
到这就差不多了 自己写的过程中多测试测试 多写几个输出语句看有没有拿到值
还有的前台传过来json的格式一定要写完整规范 不然不好取出来
有的问题实在解决不了的就重启电脑 哈哈哈
ajax 发送json 后台接收 遍历保存进数据库的更多相关文章
- AJAX发送json,SpringMVC 接收JSON,@RequestBody
		需求:JQuery ajax前台,采用 POST请求 发送json,后台使用SpringMVC接收json并处理 前台: $.ajax({ url:"请求地址", type:&qu ... 
- ajax参数传递与后台接收
		目录 ajax参数传递与后台接收 Servlet中读取http参数的方法 使用默认contentType,参数追加到url后传递 使用默认contentType,参数放到data中传递 使用默认con ... 
- ajax 发送json数据时为什么需要设置contentType: "application/json”
		1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别? contentType: "application/j ... 
- ajax发送json数据时为什么需要设置contentType: "application/json”
		1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别?contentType: "application/js ... 
- Django中数据传输编码格式、ajax发送json数据、ajax发送文件、django序列化组件、ajax结合sweetalert做二次弹窗、批量增加数据
		前后端传输数据的编码格式(contentType) 提交post请求的两种方式: form表单 ajax请求 前后端传输数据的编码格式 urlencoded formdata(form表单里的) ja ... 
- ajax发送json格式与文件数据、django自带的序列化器(了解)
		上期内容回顾 聚合查询和分组查询 # 聚合查询 max min sum avg count # 查询关键字:aggregate from django.db.models import Max, Mi ... 
- 怎样提交FIREDAC数据集的DELTA到中间件然后保存进数据库
		你可以在客户端序列FireDAC数据集的DELTA , 将序列后的STREAM发送给中间件, 中间件的TFDQuery或TFDMemTable调用LOADFROMSTREAM()方法加载流, 然后调用 ... 
- Java 读取Excel内容并保存进数据库
		读取Excel中内容,并保存进数据库 步骤 建立数据库连接 读取文件内容 (fileInputStream 放进POI的对应Excel读取接口,实现Excel文件读取) 获取文件各种内容(总列数,总行 ... 
- python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)
		昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ... 
随机推荐
- Eclipse安装Hibernate插件快速生成配置文件
			Eclipse安装Hibernate插件快速生成配置文件 插件链接: http://pan.baidu.com/s/1mi3KVtI 密码: kmjg 1.安装插件: 1.在eclipse顶部窗口he ... 
- jboss初体验
			本人电脑的java版本是java8,而jboss的版本最多支持到java7.x,导致启动jboss7,在浏览器无法访问localhost:8080. 于是我查找百度,发现jboss8其实就是wildf ... 
- B/S 架构中,网络模型的分解与协议解析
			前言 如果是C/S专业毕业的或者是学过计算机网络课程的童鞋们,相信大家都知道网络模型的划分,本文首先来聊一聊目前对于B/S结构中,网络模型分解的两种方式. 没错,相信大家看到这个图片的时候就已经明白了 ... 
- PS软件操作应用—文字特效
			前 言 JRedu 在图像调整和文字工具的分享文章中,对文字工具做了简单的介绍,包括了文字的字体.字号大小.颜色以及字间距行距等等的设置和修改,都是一些基本的功能,在这次的分享中我们介绍下文字特 ... 
- pyhton安装pillow问题解决
			最近在学习Python的微信处理相关,因wxpy库中的微信客户端需要接收二维码需要安装pillow,如下 class wxpy.Bot(cache_path=None, console_qr=Fals ... 
- python学习总结(函数进阶)
			-------------------程序运行原理------------------- 1.模块的内建__name__属性,主模块其值为__main__,导入模块其值为模块名 1.创建时间, ... 
- Nginx keepalived实现高可用负载均衡详细配置步骤
			Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing(负载均衡) ... 
- Apple公司开发者账号申请(2017包含邓白氏码申请)
			1.首先看需要那种账号 2.这个需要的是公司开发者账号,首先我们注册一个普通apple账号 打开网址 https://developer.apple.com 进入点击Account 进入登录页面,点击 ... 
- 向eclipse的JavaWeb项目中导入jar包--备忘录
			一: 在你所需的jar包网站下载对应的jar包.如org.apache.commons.lang.jar. 二:复制粘贴到该JavaWeb的WEB-INF目录下的lib目录下,如: 三:右键 ... 
- 基于Vue全家桶制作的的高仿美团APP
			鸣谢:该项目核心部分参考了慕课网精英讲师ustbhuangyi的课程,其余部分高仿美团APP构建. 前端菜鸟项目,大佬们轻喷~ 美团外卖APP 
