- 浏览: 158885 次
- 性别:
- 来自: 魔都
最新评论
-
renzhengzhi:
mybatis的这个批量insert为什么不是在一个事务里?
使用Mybatis做批量插入 -
forlab:
花架构威武吧唧,一统江湖
Eclipse插件之Findbugs -
恋上你的味道:
花家狗V587 神功盖屎 一桶浆糊
Netty+Tomcat热部署端口占用解决办法 -
hekuilove:
宁帅陈 写道你好,我想通过java程序获取@当前登录用户的人员 ...
新浪微博API开发流程 -
宁帅陈:
你好,我想通过java程序获取@当前登录用户的人员以及信息,怎 ...
新浪微博API开发流程
以前都是用ajax做一些简单的东东,很少用ajax做查询。今日在开发中遇到个比较基础但是却很容易犯的错误,可能会使新手束手无策,于是写此blog分享心得
好了话不多说直接步入正题贴上代码
jquery请求代码:
但是重点不在jquery里,再看java代码 注:我这里是使用的spring的Controller,这里重点不在框架,而是在返回的结果,使用任何框架都是一样的.因为你返回的东西都是一样
通过这段代码可以看到本人返回了一个List对象,看似毫无问题的代码,可是它偏偏就出了问题...jquery里始终是执行的
于是我疑惑的打开了firefox,通过firefox我发现请求响应200了
图片上的内容就是返回的是将LIST转换为JSON集合后的结果,先别管其它,至少知道了数据已经返回回来了.返回回来了为什么还error了呢?并且还提示parseerror错误?
问题就在最后一部转换的时候,LIST转换为JSON的时候
看看ApkStatisticRawBean里面究竟是什么东东
原来是我在此对象里面封装了对象
在将List转为JSON的时候会解析到ApkBean然后里面有JarBean又开始解析JarBean然后JarBean里面又有List<APkBean> 然后又开始解析ApkBean了....
死循环了...!!!
说到这里 相比不明白的差不多也明白了吧...如果你的POJO里面有太多的关联最好不要直接返回..而是针对要返回的需求再创建一个POJO内容自己填充 我这里就是这样解决的
好了话不多说直接步入正题贴上代码
jquery请求代码:
$("#show_supply_table").click(function() { var datas={time:time,event:event,supply:supply,productName:productName}; var paths=path+"/statistic/aboutSupply.shtml"; $.ajax({ type:"get", url:paths, dataType:"json", data:datas, success:function(data){ alert("对鸟!!"); },error:function(a,b){ alert(b); } }); });
但是重点不在jquery里,再看java代码 注:我这里是使用的spring的Controller,这里重点不在框架,而是在返回的结果,使用任何框架都是一样的.因为你返回的东西都是一样
/** * 处理ajax请求,返回查询结果 * * @author Quinn He * @param time 时间范围 * @param event 事件 * @param supply 供应商 * @param productName 产品名 * @dateTime 2012-3-2 下午2:19:01 * @param request * @param response * @return java.util.Map<String, Object> */ @RequestMapping(value = "/statistic/aboutSupply.shtml", method = RequestMethod.GET) @ResponseBody protected Map<String, Object> aboutSupply(@RequestParam(value = "time") String time, @RequestParam(value = "event") String event, @RequestParam(value = "supply") String supply, @RequestParam(value = "productName") String productName, final HttpServletRequest request, final HttpServletResponse response) { Map<String, Object> model = new HashMap<String, Object>(); time = StringUtils.isEmpty(time) ? null : time; event = StringUtils.isEmpty(event) ? null : event; supply = StringUtils.isEmpty(supply) ? null : supply; productName = StringUtils.isEmpty(productName) ? null : productName; String[] params = { time, event, supply, productName }; List<ApkStatisticRawBean> list = this.querySupplyDetail(params, null); model.put("aboutSupplys", list); return model; }
通过这段代码可以看到本人返回了一个List对象,看似毫无问题的代码,可是它偏偏就出了问题...jquery里始终是执行的
error:function(a,b){ alert(b); }
于是我疑惑的打开了firefox,通过firefox我发现请求响应200了
图片上的内容就是返回的是将LIST转换为JSON集合后的结果,先别管其它,至少知道了数据已经返回回来了.返回回来了为什么还error了呢?并且还提示parseerror错误?
问题就在最后一部转换的时候,LIST转换为JSON的时候
看看ApkStatisticRawBean里面究竟是什么东东
import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import me.gall.business.model.mybatis.bean.ApkStatisticRaw; import me.gall.business.model.mybatis.bean.SupplyInfo; import me.gall.business.service.init.SystemServiceImpl; /** * @author Quinn He * @dateTime 2012-2-9 下午4:35:18 */ public class ApkStatisticRawBean { /** * @author Quinn He * @dateTime 2012-2-29 下午6:06:24 * @param bean */ public ApkStatisticRawBean(ApkStatisticRaw bean) { this.id = bean.getId(); this.uuid = bean.getUuid(); if (bean.getApkId() != null) { this.apk = SystemServiceImpl.getInstance().getBaseApkMap().get(bean.getApkId()); } if (bean.getChannelId() != null) { this.channel = SystemServiceImpl.getInstance().getChannels().get(bean.getChannelId()); } if (bean.getSupplyId() != null) { this.supply = SystemServiceImpl.getInstance().getSupplys().get(bean.getSupplyId()).getSupply(); } this.content = bean.getContent(); if (bean.getCreateTime() != null) { this.createTime = new Date(bean.getCreateTime()); } this.creator = bean.getCreator(); if (bean.getEventId() != null) { this.event = SystemServiceImpl.getInstance().getApkStatisticCategoryEventMap().get(bean.getEventId()); } this.numbers = bean.getNumbers(); this.other = bean.getOther(); this.productName = bean.getProductName(); this.status = bean.getStatus(); if (bean.getTime() != null) { this.time = new Date(bean.getTime()); } } /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.id * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private Integer id; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.uuid * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private String uuid; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.apk_id * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private ApkBean apk; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.event_id * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private ApkStatisticCategoryEventBean event; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.supply_id * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private SupplyInfo supply; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.channel_id * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private ChannelBean channel; /** * This field was generated by MyBatis Generator. This field corresponds to the database column * apk_statistic_raw.product_name * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private String productName; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.content * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private String content; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.time * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private Date time; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.numbers * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private Integer numbers; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.status * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private Integer status; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.creator * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private String creator; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.create_time * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private Date createTime; /** * This field was generated by MyBatis Generator. This field corresponds to the database column apk_statistic_raw.other * * @mbggenerated Thu Feb 09 17:04:23 CST 2012 */ private String other; get..... set.....
原来是我在此对象里面封装了对象
private ApkBean apk;
/** * @author Quinn He * @dateTime 2011-11-15 下午2:20:27 */ public class ApkBean { ... private JarBean jar; ... }
public class JarBean { ... private List<ApkBean> apkList; ... }问题就出在这里了...我的ApkBean里面有JarBean JarBean中有List<ApkBean>
在将List转为JSON的时候会解析到ApkBean然后里面有JarBean又开始解析JarBean然后JarBean里面又有List<APkBean> 然后又开始解析ApkBean了....
死循环了...!!!
说到这里 相比不明白的差不多也明白了吧...如果你的POJO里面有太多的关联最好不要直接返回..而是针对要返回的需求再创建一个POJO内容自己填充 我这里就是这样解决的
发表评论
-
JVM相关笔记
2019-01-30 21:19 5021、检查死锁 jps -v [查看所有Java进 ... -
Git常用命令记录
2019-01-08 11:20 535强制更新 git log git reset --hard ... -
Netty+Tomcat热部署端口占用解决办法
2015-06-13 17:32 8299在eclipse使用maven deploy (tomcat: ... -
MAVEN+TOMCAT7、8的Deploy配置
2015-06-13 13:46 41、配置好conf/tomcat-users.xml,加入如下 ... -
javascript之HashMap
2015-04-16 11:23 1223用法 var map = new HashMap(); ... -
发现面向对象的美之抽象
2014-09-19 11:56 0很多开发者在面试的时候恐怕都问过或者被问过,面向对象的几大特性 ... -
ActiveMQ初级教程
2014-05-20 18:07 2696MQ的思想其实和连接池差不多,只不过一个是队列,一个是多线程。 ... -
Mybatis批量插入Oracle、MySQL
2014-05-19 16:09 5205要做批量插入数据库, ... -
ActiveMQ发送接收TextMessage、BytesMessage
2014-02-24 16:51 76471、TextMessage 发送部分 package o ... -
UDP通讯协议
2014-02-20 21:01 1243在做手机和服务端通讯时,UDP是其中可用协议之一。不过UDP的 ... -
JBOSS7配置JDNI
2014-02-13 21:52 13101、配置jar包 在jboss7的安装目录modules下建立 ... -
自定义DWR拦截器
2013-06-04 19:07 4550使用DWR和其它mvc框架混用时(如struts和spring ... -
Eclipse+TOMCAT工程如何deploy在webapps文件夹
2013-02-05 20:10 4820Eclipse集成Tomcat发布工程的时候,有时候项目发布不 ... -
根据时间的复杂统计
2012-12-07 18:24 1309客户的需求往往是各种各样的,本人在开发系统的时候遇到一个比较复 ... -
MySQL UTF-8中文排序
2012-06-15 16:08 2896假如在MySQL的表中有一列字段是中文,需要根据该字段从a-z ... -
关于:the last packet sent successfully to the server was 0 milliseconds ago
2012-04-20 10:11 2748最近老是出现个问题,早上以来公司登录公司的后台业务系统(由我是 ... -
使用Mybatis做批量插入
2012-03-30 19:50 30588最近有个需求,将excel的数据导入的数据库的这个一个操作。 ... -
过滤器chain.doFilter(req, resp);抛异常java.lang.IllegalArgumentException
2012-02-08 21:35 2598今天在开发中遇到一个错误 org.springframew ... -
关于maven工程内存溢出解决办法
2012-01-04 14:17 2188在看maven in action的时候意外发现我们项目中经常 ...
相关推荐
您可能感兴趣的文章:JQuery ajax中error返回错误及一直返回error的解答jquery中ajax使用error调试错误的方法ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息Jquery ajax执行顺序 返回自
jQuery提供$.param()方法将JavaScript对象序列化为URL查询字符串,以及$.parseJSON()(现在已废弃,推荐使用JSON.parse())将JSON字符串解析为JavaScript对象。 **6. 响应状态和回调函数** 在$.ajax()中,可以定义...
**jQuery AJAX 在 ASP.NET 中的应用实例** 在网页开发中,jQuery AJAX 提供了一种高效、简洁的方法来实现页面的异步交互,而无需刷新整个页面。在 ASP.NET 环境下,结合 jQuery,我们可以创建出更加动态和交互性强...
**jQuery + AJAX 处理 XML 数据** 在网页开发中,jQuery 和 AJAX 技术的结合是获取和操作服务器端数据的常见方式。本篇将详细探讨如何使用 jQuery 的 AJAX 功能来处理 XML(可扩展标记语言)数据。 **1. jQuery 和...
本案例主要对比了传统Ajax和JqueryAjax在处理JSON数据时的区别和用法,这对于理解和优化Web应用的交互体验至关重要。 1. **传统Ajax操作JSON** 传统Ajax操作JSON通常涉及到以下几个步骤: - 创建XMLHttpRequest...
**jQuery AJAX 异步加载详解** 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。jQuery 是一个广泛...
6. **错误处理**:同时,还需要处理可能发生的错误,如网络问题或服务器返回的错误状态码,通过Ajax的error回调函数进行错误提示。 7. **动画效果**:为了提高用户体验,可以使用jQuery的动画功能,例如在数据加载...
**jQuery AJAX 无刷新技术详解** 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。jQuery库使得AJAX操作...
4. **回调函数**:jQuery的AJAX方法支持success、error和complete等回调函数,这些函数会在请求成功、失败或完成时执行,处理相应的逻辑。 5. **跨域问题**:如果前端和后端不在同一个域名下,可能需要处理跨域问题...
**jQuery AJAX** jQuery 是一个广泛使用的 JavaScript 库,它极大地简化了 DOM 操作、事件处理以及,特别是我们这里关注的,AJAX(异步JavaScript和XML)调用。AJAX 允许网页在不重新加载整个页面的情况下与服务器...
在IT行业中,jQuery AJAX 和 Struts 1.3 是两个重要的技术组件,它们在Web开发领域扮演着不可或缺的角色。这篇文章将深入探讨这两个技术的结合使用,以及如何通过XML与AJAX进行数据交互。 首先,jQuery是一个轻量级...
在Web开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理以及Ajax交互。本篇文章将深入探讨jQuery中的ajax、post、get方法以及如何使用json格式传递数据。 1. **jQuery的$.ajax()函数**...
在深入探讨Jquery中的Ajax函数之前,我们先简要了解Ajax(Asynchronous JavaScript and XML)的概念。Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这使得Web应用程序可以更加流畅地运行,...
在本篇文章中,我们将探讨如何利用jQuery的Ajax功能实现异步传输List和Map数据结构,这对于构建动态Web应用程序至关重要。通过Ajax(Asynchronous JavaScript and XML)技术,我们可以实现在不刷新整个页面的情况下...
jQuery的AJAX功能是JavaScript开发中非常常用的一个部分,它允许开发者在不刷新整个页面的情况下与服务器进行异步数据交换,极大地提升了用户体验。在本文中,我们将深入理解jQuery的AJAX方法并尝试创建一个简单的...
本文将深入探讨如何使用JS操作Cookie的子键,以及如何利用jQuery的Ajax方法进行无刷新的数据提交,并接收后台返回的值。 首先,让我们了解什么是Cookie和它的子键。Cookie是一种在客户端存储小量信息的方法,它由...
在Web开发中,jQuery、Ajax和JSON是三个关键的技术组件,它们共同构成了高效、异步的数据交互机制。这里我们将深入探讨如何使用jQuery结合Ajax技术来实现文件上传,并通过JSON进行数据解析。 首先,jQuery是一个...
在IT行业中,jQuery和AJAX是两个非常重要的概念,它们在网页动态交互和提升用户体验方面发挥着关键作用。本文将详细解析jQuery如何使用AJAX进行数据的异步传输,以及在ASP开发环境中如何实现这一过程。 首先,让...
1. **创建Ajax请求**:在jQuery中,可以使用`$.ajax()`函数发起一个Ajax请求。设置请求类型(如GET或POST)、URL、数据类型(如json)和其他选项。例如: ```javascript $.ajax({ type: 'GET', url: 'your-api-...