`
hekuilove
  • 浏览: 158885 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

jquery ajax parseerror问题

阅读更多
以前都是用ajax做一些简单的东东,很少用ajax做查询。今日在开发中遇到个比较基础但是却很容易犯的错误,可能会使新手束手无策,于是写此blog分享心得
好了话不多说直接步入正题贴上代码
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内容自己填充 我这里就是这样解决的
  • 描述: 弹出错误
  • 大小: 4.3 KB
  • 描述: 返回的JSON数据
  • 大小: 202.7 KB
分享到:
评论

相关推荐

    空格或者空白字符导致$.ajax()报parseerror错误小结

    您可能感兴趣的文章:JQuery ajax中error返回错误及一直返回error的解答jquery中ajax使用error调试错误的方法ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息Jquery ajax执行顺序 返回自

    jQuery ajax

    jQuery提供$.param()方法将JavaScript对象序列化为URL查询字符串,以及$.parseJSON()(现在已废弃,推荐使用JSON.parse())将JSON字符串解析为JavaScript对象。 **6. 响应状态和回调函数** 在$.ajax()中,可以定义...

    JQueryAjax在asp.net中的应用实例

    **jQuery AJAX 在 ASP.NET 中的应用实例** 在网页开发中,jQuery AJAX 提供了一种高效、简洁的方法来实现页面的异步交互,而无需刷新整个页面。在 ASP.NET 环境下,结合 jQuery,我们可以创建出更加动态和交互性强...

    JQuery+AJAX处理XML数据

    **jQuery + AJAX 处理 XML 数据** 在网页开发中,jQuery 和 AJAX 技术的结合是获取和操作服务器端数据的常见方式。本篇将详细探讨如何使用 jQuery 的 AJAX 功能来处理 XML(可扩展标记语言)数据。 **1. jQuery 和...

    传统Ajax和JqueryAjax操作Json对比案例

    本案例主要对比了传统Ajax和JqueryAjax在处理JSON数据时的区别和用法,这对于理解和优化Web应用的交互体验至关重要。 1. **传统Ajax操作JSON** 传统Ajax操作JSON通常涉及到以下几个步骤: - 创建XMLHttpRequest...

    Jquery 封装下的ajax异步加载

    **jQuery AJAX 异步加载详解** 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。jQuery 是一个广泛...

    一个页面实现Ajax效果的增删改查-JQuery+Json版

    6. **错误处理**:同时,还需要处理可能发生的错误,如网络问题或服务器返回的错误状态码,通过Ajax的error回调函数进行错误提示。 7. **动画效果**:为了提高用户体验,可以使用jQuery的动画功能,例如在数据加载...

    jquery ajax无刷新技术

    **jQuery AJAX 无刷新技术详解** 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。jQuery库使得AJAX操作...

    常用jquery ajax与后台交互

    4. **回调函数**:jQuery的AJAX方法支持success、error和complete等回调函数,这些函数会在请求成功、失败或完成时执行,处理相应的逻辑。 5. **跨域问题**:如果前端和后端不在同一个域名下,可能需要处理跨域问题...

    JqueryAjax_and_JS_ajax

    **jQuery AJAX** jQuery 是一个广泛使用的 JavaScript 库,它极大地简化了 DOM 操作、事件处理以及,特别是我们这里关注的,AJAX(异步JavaScript和XML)调用。AJAX 允许网页在不重新加载整个页面的情况下与服务器...

    jquery ajax +struts1.3

    在IT行业中,jQuery AJAX 和 Struts 1.3 是两个重要的技术组件,它们在Web开发领域扮演着不可或缺的角色。这篇文章将深入探讨这两个技术的结合使用,以及如何通过XML与AJAX进行数据交互。 首先,jQuery是一个轻量级...

    jQuery ajax、post、get、json格式传递数据例子

    在Web开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理以及Ajax交互。本篇文章将深入探讨jQuery中的ajax、post、get方法以及如何使用json格式传递数据。 1. **jQuery的$.ajax()函数**...

    详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()

    在深入探讨Jquery中的Ajax函数之前,我们先简要了解Ajax(Asynchronous JavaScript and XML)的概念。Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这使得Web应用程序可以更加流畅地运行,...

    jQuery的Ajax实现异步传输List、Map

    在本篇文章中,我们将探讨如何利用jQuery的Ajax功能实现异步传输List和Map数据结构,这对于构建动态Web应用程序至关重要。通过Ajax(Asynchronous JavaScript and XML)技术,我们可以实现在不刷新整个页面的情况下...

    jQuery ajax的功能实现方法详解

    jQuery的AJAX功能是JavaScript开发中非常常用的一个部分,它允许开发者在不刷新整个页面的情况下与服务器进行异步数据交换,极大地提升了用户体验。在本文中,我们将深入理解jQuery的AJAX方法并尝试创建一个简单的...

    js操作Cookie子键+Jquery调用Ajax方法执行后台操作

    本文将深入探讨如何使用JS操作Cookie的子键,以及如何利用jQuery的Ajax方法进行无刷新的数据提交,并接收后台返回的值。 首先,让我们了解什么是Cookie和它的子键。Cookie是一种在客户端存储小量信息的方法,它由...

    jquery+ajax上传解析文件

    在Web开发中,jQuery、Ajax和JSON是三个关键的技术组件,它们共同构成了高效、异步的数据交互机制。这里我们将深入探讨如何使用jQuery结合Ajax技术来实现文件上传,并通过JSON进行数据解析。 首先,jQuery是一个...

    jQuery使用AJAX案例代码

    在IT行业中,jQuery和AJAX是两个非常重要的概念,它们在网页动态交互和提升用户体验方面发挥着关键作用。本文将详细解析jQuery如何使用AJAX进行数据的异步传输,以及在ASP开发环境中如何实现这一过程。 首先,让...

    ajax从后台读json数据,jquery在页面简析

    1. **创建Ajax请求**:在jQuery中,可以使用`$.ajax()`函数发起一个Ajax请求。设置请求类型(如GET或POST)、URL、数据类型(如json)和其他选项。例如: ```javascript $.ajax({ type: 'GET', url: 'your-api-...

Global site tag (gtag.js) - Google Analytics