如何使用ajax将json传入ajax获取后台json数据数据

登录用户才能评论,请先或。酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
最近在做一个小小的功能模块,前台有很多的数据需要传入到后台,前台页面设计如下:
看起来不是很清楚,总之表单中的数据都要提交到后台进行处理,然后插入到数据库,而且是一起提交到后台的,实现的方法大致有两种:(在处理类似需求,如果大家有其他意见,可以一起来交流分享)
1)通过表单提交,当然在后台需要为每个字段定义一个集合对象,然后在页面中使用name标志,如果使用了strut2的话就更简单了,在Action中定义的集合对象名称和页面标签的name字段标签一致,那么这些数据在后台就都能够取得到了,这里就不进行阐述了;
2)封装JSON对象,然后通过Ajax方法提交到后台,将每行记录封装为一个JSON对象,然后把这些JSON对象加入到一个数组当中,核心代码如下:
//封装JSON数组对象
functiongetJSONObject(){
vardateArray=getArrayByName(&plan_date&);
varweekArray=getArrayByName(&plan_week&);
varjcTypeArray=getArrayByName(&jcType&);
varjcNumArray=getArrayByName(&jcNum&);
varxcxcArray=getArrayByName(&xcxc&);
varkilometreArray=getArrayByName(&kilometre&);
varkcAreaArray=getArrayByName(&kcArea&);
varcommentsArray=getArrayByName(&comments&);
varstartTime=$(&#startTime&).val();
varendTime=$(&#endTime&).val();
varplan_title=$(&#plan_title&).val();
varobjArray=[];
varJSONObj=newObject();
JSONObj.start_time=startT
JSONObj.end_time=endT
if(plan_title==&&){
plan_title=startTime+&至&+endTime+&检修计划&;
JSONObj.plan_title=plan_
for(vari=0;i&dateArray.i++){
obj=newObject();
obj.planTime=dateArray[i];
obj.planWeek=weekArray[i];
obj.jcType=jcTypeArray[i];
obj.jcNum=jcNumArray[i];
obj.xcxc=xcxcArray[i];
obj.kilometre=kilometreArray[i];
obj.kcArea=kcAreaArray[i];
<ments=commentsArray[i];
objArray.push(obj);
JSONObj.jsonStr=JSON.stringify(objArray);
returnJSONO
实现的大致思路是将每列字段的数据都封装到一个数组当中,因为空字符串也是需要的&&,所以根据下标就可以取得相应的值,然后把每行的值封装为一个Object对象,给Object动态添加属性和相应的值,也就是所谓的key/value形式,在这里我得到的JSONObj数据的形式大致如下:
{&start_time&:&&,
&end_time&:&&,
&title&:&至检修计划&,
&jsonStr&:[{&jcType&:&SS3&,&jcNum&:1234,&comments&:&test1&....},
{&jcType&:&DDD&,&jcNum&:2365,&comments&:&test2&....}....]
这样封装,是根据项目需求封装的,使用ajax请求action,将数据发送过去:
type:&POST&,
url:&planManage!savePlan.do&,
data:JSONObj,
dataType:&text&,
success:function(data){
alert(data);
我们在后台接收:
StringstartTime=request.getParameter(&start_time&);
StringendTime=request.getParameter(&end_time&);
StringplanTitle=request.getParameter(&plan_title&);
StringjsonStr=request.getParameter(&jsonStr&);
startTime、endTime、title都是可以接收到相应的数据的,因为JSON封装后的数据本来就是键值对的形式,当我们接收jsonStr的时候,发现jsonStr显示为null,表明我们不能通过AJax将数组对象数据传递到后台去,因为它不支持,所以我们需要使用JSONObj.jsonStr=JSON.stringify(objArray);将这个数组对象转换为字符串,然后传递到后台就可以接收了,后台接收后显示的信息是多个对象的字符串信息:
{&jcType&:&SS3&,&jcNum&:1234,&comments&:&test1&....},{&jcType&:&DDD&,&jcNum&:2365,&comments&:&test2&....}....
我们使用org.json包下相应的类就可以解析我们的字符串JSON数据:
JSONArrayjsonArray=newJSONArray(jsonStr);
JSONObjectjsonObject=
MainPlanDetailmainPlanDetail=
List&MainPlanDetail&list=newArrayList&MainPlanDetail&();
for(inti=0;i&jsonArray.length();i++){
jsonObject=jsonArray.optJSONObject(i);
mainPlanDetail=newMainPlanDetail();
mainPlanDetail.setPlanTime(jsonObject.optString(&planTime&));
mainPlanDetail.setPlanWeek(jsonObject.optString(&planWeek&));
mainPlanDetail.setJcType(jsonObject.optString(&jcType&));
mainPlanDetail.setJcNum(jsonObject.optString(&jcNum&));
mainPlanDetail.setXcxc(jsonObject.optString(&xcxc&));
mainPlanDetail.setKilometre(jsonObject.optString(&kilometre&));
mainPlanDetail.setKcArea(jsonObject.optString(&kcArea&));
mainPlanDetail.setComments(jsonObject.optString(&comments&));
mainPlanDetail.setIsCash(0);
mainPlanDetail.setNum(i+1);
list.add(mainPlanDetail);
我的逻辑是解析后封装为对象做相应的逻辑处理,jsonObject.optString(&planWeek&))与jsonObject.getString(&planWeek&))的区别是optString中不存在该字段是返回&&,而getString则会出现异常信息!这样我们封装的JSON对象或者JSON数组都能通过前台AJax传入到后台了;
注意:在IE测试中,发现JSON.stringify不兼容IE6、7,就是说在IE6、7下使用会报错:找不到JSON对象,在网上找了相关资料,我们需要引入一个包,json2.js,可以在我的博客中进行下载:
关于JSON.stringify()方法的详解参考:
JSON.stringify(), 将value(Object,Array,String,Number...)序列化为JSON字符串
JSON.parse(), 将JSON数据解析为js原生值
toJSON(), 作为JSON.stringify中第二个参数(函数过滤器)补充
大家可以去尝试一下!!
& 相关主题:width:100%">
楼主,您主治大夫在到处找您呢!
width:100%">
系统居然说我是在灌水,我有吗?
width:100%">
楼主呀,,,您太有才了。。。
width:100%">
我在外边都用手机上来酷辣虫顶原地等著ni!
width:100%">
支持一下!
width:100%">
这个帖子会火的,鉴定完毕!
width:100%">
看帖回帖一条路!
width:100%">
为失联儿童祈福!
width:100%">
走自己的路,让别人打车去吧。&&
width:100%">
酷辣虫&#x53D1;&#x5E03;&#x7684;在JSP中使用前台与后台的数据传输,利用jq+Ajax的形式,json的数据格式 ...&#x5E16;&#x5B50;&#x7531;&#x7F51;&#x53CB;&#x63D0;&#x4F9B;&#x6216;&#x8F6C;&#x8F7D;&#x4E8E;&#x7F51;&#x7EDC;&#xFF0C;&#x82E5;&#x53D1;&#x5E03;&#x7684;在JSP中使用前台与后台的数据传输,利用jq+Ajax的形式,json的数据格式 ...&#x4FB5;&#x72AF;&#x4E86;&#x60A8;&#x7684;&#x6743;&#x76CA;&#xFF0C;&#x8BF7;&#x8054;&#x7CFB;&#x6211;&#x4EEC;.
12345678910
Powered by Discuz!&
Comsenz Inc. Design: Dean.
DiscuzFans
禁止发表任何与中华人民共和国法律有抵触的内容! 如有版权问题请来信告知删除! 所有内容由用户发布,并不代表的观点,本站无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如何使用ajax将json传入后台数据_百度知道
如何使用ajax将json传入后台数据
提问者采纳
我们就可以轻松地使用它的JavaScript。值的有序列表,或者关联数组(缔数组)。不同的语言。在大多数语言;值”对集合(名称&#47,可以更换成XML的数据交换格式AJAX程序? 2: 1,字典(词典),它采用完全独立的文本格式的语言JSON(JavaScript对象符号)是一种轻量级的数据交换格式;值对的集合),记录(记录).(有序值列表).“名&#47,有密钥列表(键列表),哈希表(哈希表),应该理解为一个数组(数组),应当理解为一个对象(对象)。
它有两种结构。
JSON是JavaScript的一个子集,结构(结构)
其他类似问题
为您推荐:
json的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁& & jsp页面:& & 复制代码代码如下:& & $(document).ready(function() {& & setInterval(function myTimer()& & {& & //alert('a');& & getViews();& & },1000);& & });& & //播放& & function getViews(){& & $.ajax({& & 'url':"${pageContext.request.contextPath}/video/getVideos.action?r="+Math.random()+"&open=1",& & 'data': '',& & 'dataType': 'json',& & 'type': 'get',& & 'error': function(data){& & alert("error");& && & },& & 'success': function(data) {& & if(null != data && '' != data){& & //alert(data.updateFlag);& & if(data.updateFlag==0){//如果data.updateFlag=0 不刷新& & //alert("data.updateFlag=0");& & }& & else{& & if(data.videoIds != null && data.videoIds != ""){& & var listIds=data.videoI& & var i=0;& & for(;i<listIds.++i){& & //alert("show:"+i+"id=:"+listIds[i]);& & showView(listIds[i],i);//播放& & }& & for(var j=listIds.j<9;++j){& & //alert("Stop:"+j);& & StopPlayVideo(j);& & }& & }& & }& & }& & }& & });& & }& & 此处由于此代码实现的功能是通过ajax定时访问后台Hashtable,所以为了是系统区别url不同、ajax返回值不同,特意在url后加上r=+Math.random()& & java后台处理方法:& & 复制代码代码如下:& & /**& & * 双服务器九宫格显示& & *& & * @return& & */& & @Action(value = "getVideos" ,results={& & @Result(name = SUCCESS,location="videos2.jsp")& & })& & public String getVideos() {& & if (open == 301) {& & return SUCCESS;& & } else {& & try {& & VideoHashTable videoHashTable = VideoHashTable.getInstance();& & Hashtable hashTable = videoHashTable.getRht();& & Map map = new HashMap<String, List>();& & if (videoHashTable.isUpdateFlag() == true) {& & Enumeration en = hashTable.keys();& & videoIds = new ArrayList();& & while (en.hasMoreElements()) {& & Long key = (Long) en.nextElement();& & // vth.get(key);& & videoIds.add(key);& & }& & map.put("videoIds", videoIds);& & map.put("updateFlag", 1L);& & videoHashTable.setUpdateFlag(false);& & System.out.println("getVideos:" + videoIds);& & SendMessage.sendObject(map);& & } else {& & map.put("updateFlag", 0L);& & SendMessage.sendObject(map);& & }& & } catch (Exception e) {& & e.printStackTrace();& & }& && & }& & }& & 关键要把传到jsp的页面存到map中,在通过json传值。& & SendMessage.sendObject(map)方法所在类及方法:& & 复制代码代码如下:& & package com.supcon.honcomb.& & import java.io.IOE& & import java.io.PrintW& & import javax.servlet.http.HttpServletR& & import org.apache.http.HttpR& & import org.apache.struts2.ServletActionC& & public class SendMessage {& & public static void sendMessage(String responseText){& & try {& & PrintWriter ut = ServletActionContext.getResponse().getWriter();& & out.print(responseText);& & out.close();& & } catch (IOException e) {& & e.printStackTrace();& & }& & }& & public static void sendObject(Object obj) throws Exception {& & PrintW& & String rtn = "";& & HttpServletResponse response = ServletActionContext.getResponse();& & response.setContentType("text/html");& & response.setCharacterEncoding("UTF-8");& & rtn = JsonUtil.JsonFromObject(obj);& & pw = response.getWriter();& & pw.write(rtn);& & pw.flush();& & pw.close();& & }& & }& & 您可能感兴趣的文章:JSP中获取ExtJS.Ajax前台传递的JSON数据实现过程ajax处理php返回json数据的实例代码如何获取JQUERY AJAX返回的JSON结果集实现代码Ajax与JSON的一些学习总结ajax+json+Struts2实现list传递实例讲解& & QQ空间
百度搜藏更多& & Tags:ajax json传值& & 复制链接收藏本文打印本文关闭本文返回首页& & 上一篇:Ajax $.getJSON案例详解& & 下一篇:JS AJAX前台如何给后台类的函数传递参数& & 相关文章ajax提交session超时跳转页面使用全局的方法来处理利用AJAX实现鼠标悬浮获取值的代码php AJAX POST的使用实例代码浅析AJAX乱码及错误解决方案ajax原理总结附简单实例及其优点用ajax动态加载需要的js文件Ajax添加数据与删除篇实现代码用Ajax读取XML格式的数据ajax jquery校验用户是否已经注册演示代码编码为GB2312网站让AJAX接收的数据显示支持中文& & 文章评论& & 最 近 更 新& & PHP Ajax实现页面无刷新发表评论ajax下载smartupload的内容无法显示汉字的AJAX初体验之实战篇——打造博客无刷新搜ajaxForm和ajaxSubmit 粘贴就可用示例代码防止ajax重复请求的方法(GET和POST)ajax发表 读取 评论ajax 异步获取数据实现代码 (js创建ajaxrails制作rss feed代码php ajax网站浏览统计功能的简单实现AJAX中同时发送多个请求XMLHttpRequest对& & 热 点 排 行& & ajax 技术和原理分析AJAX 缓存问题的两种解决方法(IEajax readyState的五种状态详解php ajax无刷新上传图片实例代码PHP匹配连续的数字或字母的正则表用ajax动态加载需要的js文件php AJAX POST的使用实例代码一款经典的ajax登录页面 后台aspAjax.基础教程 电子书版 提供下载AJAX javascript的跨域访问执行
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益

我要回帖

更多关于 ajax获取后台json数据 的文章

 

随机推荐