ajax 传字符串到后台,JSON.stringify()将JSON对象转换为字符串通过Ajax传入到后台处理...

搜索热词

最近在做一个小小的功能模块,前台有很多的数据需要传入到后台,前台页面设计如下:

loading.png

看起来不是很清楚,总之表单中的数据都要提交到后台进行处理,然后插入到数据库,而且是一起提交到后台的,实现的方法大致有两种:(在处理类似需求,如果大家有其他意见,可以一起来交流分享)

1)通过表单提交,当然在后台需要为每个字段定义一个集合对象,然后在页面中使用name标志,如果使用了strut2的话就更简单了,在Action中定义的集合对象名称和页面标签的name字段标签一致,那么这些数据在后台就都能够取得到了,这里就不进行阐述了;

2)封装JSON对象,然后通过Ajax方法提交到后台,将每行记录封装为一个JSON对象,然后把这些JSON对象加入到一个数组当中,核心代码如下:

//封装JSON数组对象 function getJSONObject(){ var dateArray=getArrayByName("plan_date"); var weekArray=getArrayByName("plan_week"); var jcTypeArray=getArrayByName("jcType"); var jcNumArray=getArrayByName("jcNum"); var xcxcArray=getArrayByName("xcxc"); var kilometreArray=getArrayByName("kilometre"); var kcAreaArray=getArrayByName("kcArea"); var commentsArray=getArrayByName("comments"); var startTime=$("#startTime").val(); var endTime=$("#endTime").val(); var plan_title=$("#plan_title").val(); var objArray=[]; var obj=null; var JSONObj=new Object(); JSONObj.start_time=startTime; JSONObj.end_time=endTime; if(plan_title==""){ plan_title=startTime+"至"+endTime+"检修计划"; } JSONObj.plan_title=plan_title; for(var i=0;i

实现的大致思路是将每列字段的数据都封装到一个数组当中,因为空字符串也是需要的"",所以根据下标就可以取得相应的值,然后把每行的值封装为一个Object对象,给Object动态添加属性和相应的值,也就是所谓的key/value形式,在这里我得到的JSONObj数据的形式大致如下:

{"start_time":"2013-06-19",

"end_time":"2013-08-20",

"title":"2013-06-19至2013-08-20检修计划",

"jsonStr":[{"jcType":"SS3","jcNum":1234,"comments":"test1"....},

{"jcType":"DDD","jcNum":2365,"comments":"test2"....}....]

};

这样封装,是根据项目需求封装的,使用ajax请求action,将数据发送过去:

$.ajax({ type:"POST",url:"planManage!savePlan.do",data:JSONObj,dataType:"text",success:function(data){ alert(data); } });

我们在后台接收:

String startTime=request.getParameter("start_time"); String endTime=request.getParameter("end_time"); String planTitle=request.getParameter("plan_title"); String jsonStr=request.getParameter("jsonStr");

startTime、endTime、title都是可以接收到相应的数据的,因为JSON封装后的数据本来就是键值对的形式,当我们接收jsonStr的时候,发现jsonStr显示为null,表明我们不能通过AJax将数组对象数据传递到后台去,因为它不支持,所以我们需要使用JSONObj.jsonStr=JSON.stringify(objArray);将这个数组对象转换为字符串,然后传递到后台就可以接收了,后台接收后显示的信息是多个对象的字符串信息:

{"jcType":"SS3",{"jcType":"DDD","comments":"test2"....}....

我们使用org.json包下相应的类就可以解析我们的字符串JSON数据:

JSONArray jsonArray=new JSONArray(jsonStr); JSONObject jsonObject=null; MainPlanDetail mainPlanDetail=null; List list=new ArrayList(); for(int i=0;i

我的逻辑是解析后封装为对象做相应的逻辑处理,jsonObject.optString("planWeek"))与jsonObject.getString("planWeek"))的区别是optString中不存在该字段是返回"",而getString则会出现异常信息!这样我们封装的JSON对象或者JSON数组都能通过前台AJax传入到后台了;

注意:在IE测试中,发现JSON.stringify不兼容IE6、7,就是说在IE6、7下使用会报错:找不到JSON对象,在网上找了相关资料,我们需要引入一个包,json2.js,可以在我的博客中进行下载:http://download.csdn.net/detail/harderxin/6735339

拓展:

JSON.stringify(),将value(Object,Array,String,Number...)序列化为JSON字符串

JSON.parse(), 将JSON数据解析为js原生值

toJSON(),作为JSON.stringify中第二个参数(函数过滤器)补充

大家可以去尝试一下!!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:

编程之家官方1群

编程之家官方2群

编程之家官方3群

编程之家官方4群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lan pci 联想开机_微软承认KB4568831导致部分联想ThinkPad笔记本崩溃和蓝屏

在上周末悄然发布的支持文档中,微软承认 KB4568831 以及之后发布的累积更新导致部分联想 ThinkPad 笔记本出现了系统崩溃和蓝屏问题。其中关键错误包括“SYSTEM_THREAD_EXCEPTION_NOT_HANDLED” 崩溃,0xc0000005访问被拒绝,以及进程 ldiagio.…

dropdownlist ajax联动,asp.net省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例...

本文主要列举了省市三级联动的DropDownListAjax的三种框架(aspnet/Jquery/ExtJs)示例。前段时间需要作一个的Web前端应用,需要用多个框架,一个典型的应用场景是省市三级联动,基于此应用,特将三种主要的ajax框架略作整理&#xff0…

苹果笔记本电脑亮度无法调节_苹果MacBook AirM1评测:M1芯片给您不一样的体验

哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您M1 MacBook Air是一款神奇的笔记本电脑。不是因为它看起来特别新。这是一个奇迹,虽然它从外观上跟以前看起来没啥区别。它与以前运行相同的操作系统,并…

POI读取Excel文件时,row.getCell(0).getStringCellValue()报错:数字转换异常

在进行关键字驱动测试框架的搭建时,我们可能会遇到当单元格里的内容是手机号或者密码等数字时使用row.getCell(0).getStringCellValue()这个方法是会报错的,因为这牵扯到方法过时的原因: 所以我们可以使用以下的方法解决这个问题&#xff1a…

wps合并所有sheet页_表格高级筛选、表格合并,让表格处理事半功倍

今天给大家介绍WPS最受欢迎的2个表格功能,表格合并和表格高级筛选。这都是能够切实让工作事半功倍的功能,一定要掌握哦!一、表格合并当我们有多个表格的内容需要合并到一个表格中,很多人会采取复制粘贴的方式。表格数量少时可能影…

Java代理设计模式(Proxy)的具体实现:静态代理和动态代理

Java代理设计模式(Proxy)的具体实现:静态代理和动态代理 实现方式一:静态代理静态代理方式的优点静态代理方式的缺点Java动态代理实现方式一:InvocationHandlerJava动态代理实现方式二:CGLIB用CGLIB实现Java动态代理的局限性 面…

golang 大数据平台_大数据平台是什么?有哪些功能?如何搭建大数据平台?

大数据平台是为了满足企业对于数据的各种要求而产生的。大数据平台:是指以处理海量数据存储、计算及不间断流数据实时计算等场景为主的一套基础设施。典型的包括Hadoop系列、Spark、Storm、Flink以及Flume/Kafka等集群。既可以采用开源平台,也可以采用华…

Spring 官方证实:框架爆大漏洞,JDK 9 及以上版本均受影响

继 Log4j 2 之后,听闻 Java 再次遭到漏洞攻击,这一次,似乎情况也更为严重,因为受到影响的是 Java 平台的开源全栈应用程序框架和控制反转容器实现——Spring 家族,而且网传漏洞还不止一个。 一直以来,Spri…

有关家居产品设计的外国专著_为啥外国的二手家具被称为vintage,中国就叫破烂?差在哪儿了?...

如果你细细观察国外的家居市场,发现跳蚤市场特别流行于各个国家。无论是美国、英国、法国,一些普通民众需要购买家具会优先考虑去跳蚤市场看看。所谓的跳蚤市场就是我们国内俗称的二手家具市场,在国人眼中就如同破烂一般存在。而在国外人心中…

mysql挂载数据卷_记一次生产数据库数据文件进行分区转移

概述由于之前同事没有对磁盘分区做规划,可以看到数据和系统是在同个分区的,没有单独规划一个数据分区给数据库,还有个分区是640G没有用上。下面简单介绍一下mysql数据库数据文件的转移过程。1、新建数据分区篇幅需要,以下从简。。…

java计算一个多边形的重心_2D凸多边形碰撞检测算法(二) - GJK(上)

2D凸多边形碰撞检测算法(二) - GJK(上)原理在 Narrow Phase 精细碰撞检测中,除了 SAT ,另外一个就是 GJK(Gilbert–Johnson–Keerthi)算法。它足够高效,且很容易了解它是…

高性能对象存储MinIO学习API使用使用api创建文件夹MinIO工具类

MinIO 是GlusterFS创始人之一Anand Babu Periasamy发布的开源项目,基于Apache V2 license 100% 开放源代码。MinIO采用Golang实现,客户端支持Java、Python、Javacript、Golang语言等。 其设计的主要目标是作为私有云对象存储的标准方案。非常适合于存储…

rmi远程反序列化rce漏洞_Apache Dubbo Provider默认反序列化远程代

背景近日,Apache Dubbo披露了Provider默认反序列化远程代码执行漏洞(CVE-2020-1948),攻击者可构造恶意请求,从而执行任意代码。具体信息如上图所示。在官方邮件中,漏洞报告者还提供了官方的PoC脚本,感兴趣的读者可以自…

操作痕迹包括那些_高级消防设施操作员专题之:走近气体灭火系统

按照《消防设施操作员职业技能标准》的规定,安装有气体灭火系统的单位,应当配置高级消防设施操作员。由于这些单位通常情况下都是消防安全重点单位、火灾高危单位,可以预见,高级消防设施操作员作为消防行业的高技能人才&#xff0…

flutter不支持热更新_Flutter 在安卓上可以实现热更新了

本文由 句号君 授权投稿原文链接:https://blog.csdn.net/qizewei123/article/details/102963340Flutter 官方在 GitHub 上声明是暂时不支持热更新的,但是在 Flutter 的源码里,是有一部分预埋的热更新相关的代码,并且通过一些我们自…

jar包在windows后台运行,通过.bat文件

jar包在windows后台运行.bat 一、IDEA打成jar包 这里不再赘述 二、在windows后台运行jar包 在cmd中可以使用java -jar xxxxx.jar方式运行一个jar文件,这种方法运行一旦关闭该cmd界面就会停止运行。编辑.bat文件,使用javaw方式运行不用担心文件会在不小…

java 枚举(enum) 全面解读

枚举类型是单例模式的。你需要实例化一次,然后再整个程序之中就可以调用他的方法和成员变量了。 枚举类型使用单例模式是因为他的值是固定的,不需要发生改变。 简介 枚举是Java1.5引入的新特性,通过关键字enum来定义枚举类。枚举类是一种特殊…

修改表名_面试官:如何批量修改mysql表字段、表、数据库字符集和排序规则

概述目前数据库字符集统一用的utf8,由于项目需要,引进了表情,但是utf8mb5才支持表情字符,所以需统一修改数据库字符集,下面介绍批量修改数据库字符集的办法。修正顺序是字段级别>表级别>库级别。一、批量修改整个…

Maven命令 install 和 package的区别

Maven命令 install 和 package的区别 Maven是目前十分流行的项目构建工具以及依赖解决工具,其提供的常用指令中有两个很容易引起使用者的疑惑, 那就是 install 和 package , 那么这两个命令到底有啥区别呢? Maven install 安装…

如何重启_消费市场按下重启键,企业该如何提前布局

2020广发卡携手企业和消费者,共同按下重启键,让我们放下包袱,轻松前行。当疫情结束后,你想做什么?也许是去见想见的人,和他一起去吃想吃的美食;也许是约上三五好友,或带着最亲的家人…