本文实例讲述了jQuery解析返回的xml和json方法。分享给大家供大家参考,具体如下:
一、jQuery 解析ajax请求返回的xml格式的数据
1、发送ajax请求
2、servlet 端返回的值
二、jquery 解析返回的json 格式的数据,这里是返回的json对象格式,如果返回的是json数组格式,就是js数组,所以按照js数组获取
1、ajax 请求以及解析过程
2、 servlet 返回的json格式数据
注意:在使用ajax请求返回 json 数据的时候遇到了如下的问题:
1、后台返回的是json 格式的字符串:
大家看到这些转义字符,会问 干嘛写这么麻烦,看看就知道: jquery 1.4以后对json格式变严格了
也就是说必须要这种格式的
像原来的
这种都是错误的,不合标准,所以jquery返回error 2、这个问题要注意,我自己 写这篇文章 时上面的那些代码都是没问题的后来使用发现有问题了,问题是什么那: ① 、使用ajax请求后台返回json格式的字符串,之前在ajax请求的dataType="json" 时 返回的数据使用 eval("("++")") 来转化没问题,之前也有注释解释说: 通过eval() 函数将字符串转化为js对象,如果返回的是json对象则eval() 函数不处理,如果返回的是json字符串则进行转化,但现在的情况是如果dataType="json"则eval() 就报错。而可以直接使用success:function(data) 中的data 这个json对象。
② 、使用ajax请求后台返回json格式字符串,而如果dataType='text' 则需要使用eval() 来将 json格式的字符串转化为json 对象。
③ 、如果使用的是纯js 则返回的json字符串需要使用 eval() 来转化为json对象,而如果是jquery 等框架像 ajax中定义dataType="json" 这样的话在传递的过程中已经将json格式的字符串转化为了json 对象,就没必要使用eval() 来转化。 在贴吧中有人也问这样的问题,其中一个回答如下: 对于这个问题:“后台调用了jsonarray.fromobject (list集合) 是不是这样就是json对象了 前台就不要 eval 了” 首先说明这样不是json对象,返回的是一个json格式的字符串,如果你前端用的是纯js,就要eval一下,但如果有用到jq框架等,它会帮你自动转成json对象,就不用eval了。 注:eval方法不是转json对象的意思,而是将字符串转成可执行的js代码。
如:对于一个字符串“alert('hello world')",eval这个字符串就能执行了。 在后台返回的是json格式的字符串的前提下 如果前台获取的是 json格式的字符串则需要使用 eval() 或JSON.parse(str) 等方法将字符串转化为json 对象,其实也就是js对象 如果前台使用了jq等框架并定义了返回的数据类型,如ajax中如果定义dataType='json' 则后台数据传过来前台会自动转化为json对象即js对象 就不用我们使用eval() 等方法进行转化。 PS:这里再为大家提供几款关于xml与json操作的在线工具供大家参考使用:总结:
XML
在线压缩/格式化工具:
在线JSON代码检验、检验、美化、格式化工具:
JSON
在线格式化工具:更多关于jQuery相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家jQuery程序设计有所帮助。