本文实例讲述了jQuery解析返回的xml和json方法。分享给大家供大家参考,具体如下:

一、jQuery 解析ajax请求返回的xml格式的数据
1、发送ajax请求
<script type="text/JavaScript">
function jqxml(){
$.ajax({
url:"http://localhost:18080/servlet/Servlet1",
// 请求方式
type:"post",
// 服务器返回的数据的格式,常用的有 text/xml/json
dataType:"xml",
data:{age:1212},
success:function(data){
// 这里获取的data就是一个xml对象,这个对象可以按照dom树格式来解析
var name=$(data).find("infos").find("info").each(function(){
alert($(this).find("name").text());
alert($(this).find("age").text());
});
},
error:function (edata){
alert(edata);
}
});
};
</script>
2、servlet 端返回的值
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String aaa= request.getParameter("age");
System.out.print("ajax 数据:"+aaa);
// 向客户端响应信息
response.setCharacterEncoding("GBK");
response.setContentType("text/xml");
PrintWriter out= response.getWriter();
out.print("<?xml version=\"1.0\" encoding=\"GBK\"?>");
out.println("<infos>");
out.println("<info>");
out.println("<name>"+"name1"+"</name>");
out.println("<age>"+12+"</age>");
out.println("</info>");
out.println("<info>");
out.println("<name>"+"name11"+"</name>");
out.println("<age>"+112+"</age>");
out.println("</info>");
out.println("</infos>");
}
二、jquery 解析返回的json 格式的数据,这里是返回的json对象格式,如果返回的是json数组格式,就是js数组,所以按照js数组获取
1、ajax 请求以及解析过程
<script type="text/javascript">
function jqxml(){
$.ajax({
url:"http://localhost:18080/servlet/Servlet3",
// 请求方式
type:"post",
// 服务器返回的数据的格式,常用的有 text/xml/json
dataType:"json",
data:{age:1212},
success:function(data){
// 通过eval() 函数将字符串转化为js对象,如果返回的是json对象则eval() 函数不处理,如果返回的是json字符串则进行转化
// 注意这样写有时有问题,因为已经在ajax中定义了返回的是json对象而在使用eval() 来转化就有可能报错,所以要吗把json 换成text要吗把eval去了直接使用data
var json= eval("("+data+")");
var age1=json.age;
var name1=json.name;
alert(age1+""+name1);
},
error:function (edata){
alert(edata);
}
});
};
</script>
2、 servlet 返回的json格式数据
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// 向ajax 返回json格式的数据
String aaa = request.getParameter("age");
System.out.print("ajax 数据:" + aaa);
// 向客户端响应信息
response.setCharacterEncoding("GBK");
response.setContentType("text/json");
PrintWriter out = response.getWriter();
// 这里使用 json 对象的格式
String stu = "{age:12,name:name12}";
out.print(stu);
out.flush();
out.close();
}
注意:在使用ajax请求返回 json 数据的时候遇到了如下的问题:
1、后台返回的是json 格式的字符串:
String stu = "{\"age\":\"12\",\"name\":\"whd\"}";
大家看到这些转义字符,会问 干嘛写这么麻烦,看看就知道: 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互相转换工具:
http://tools./code/xmljson
在线格式化XML/在线压缩XML:
http://tools./code/xmlformat
XML在线压缩/格式化工具:
http://tools./code/xml_format_compress
在线JSON代码检验、检验、美化、格式化工具:
http://tools./code/json
JSON在线格式化工具:
http://tools./code/jsonformat
在线json压缩/转义工具:
http://tools./code/json_yasuo_trans
更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery操作xml技巧总结》、《jQuery操作json数据技巧汇总》、《jquery中Ajax用法总结》、《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery常见经典特效汇总》及《jquery选择器用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
# jQuery
# 解析
# 返回
# xml
# json
# jQuery 解析xml文件
# JQuery解析HTML、JSON和XML实例详解
# jQuery+ajax读取并解析XML文件的方法
# 使用jquery解析XML的方法
# jQuery 行级解析读取XML文件(附源码)
# JQuery解析XML数据的几个简单实例
# jquery解析XML字符串和XML文件的方法说明
# 用JQuery 实现AJAX加载XML并解析的脚本
# Jquery Ajax解析XML数据(同步及异步调用)简单实例
# JQuery解析XML的方法小结
# jQuery实现的解析本地 XML 文档操作示例
# 的是
# 转化为
# 都是
# 这个问题
# 报错
# 要使
# 转成
# 则需
# 客户端
# 如果你
# 也有
# 相关内容
# 去了
# 就能
# 就有
# 而在
# 帮你
# 感兴趣
# 就没
# 要注意
相关文章:
5种Android数据存储方式汇总
网站网页制作专业公司,怎样制作自己的网页?
建站主机服务器选型指南与性能优化方案解析
如何用VPS主机快速搭建个人网站?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
临沂网站制作公司有哪些,临沂第四中学官网?
如何安全更换建站之星模板并保留数据?
python的本地网站制作,如何创建本地站点?
如何选择靠谱的建站公司加盟品牌?
如何在建站之星网店版论坛获取技术支持?
如何自定义建站之星模板颜色并下载新样式?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
如何快速启动建站代理加盟业务?
重庆市网站制作公司,重庆招聘网站哪个好?
西安大型网站制作公司,西安招聘网站最好的是哪个?
已有域名如何免费搭建网站?
免费网站制作appp,免费制作app哪个平台好?
c++怎么用jemalloc c++替换默认内存分配器【性能】
网站制作大概多少钱一个,做一个平台网站大概多少钱?
C++时间戳转换成日期时间的步骤和示例代码
建站之星后台管理:高效配置与模板优化提升用户体验
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何有效防御Web建站篡改攻击?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
香港服务器部署网站为何提示未备案?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
制作网站公司那家好,网络公司是做什么的?
清除minerd进程的简单方法
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
宝塔建站后网页无法访问如何解决?
Python多线程使用规范_线程安全解析【教程】
北京企业网站设计制作公司,北京铁路集团官方网站?
定制建站方案优化指南:企业官网开发与建站费用解析
高防服务器租用指南:配置选择与快速部署攻略
如何获取免费开源的自助建站系统源码?
Bpmn 2.0的XML文件怎么画流程图
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
盐城做公司网站,江苏电子版退休证办理流程?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
网站制作需要会哪些技术,建立一个网站要花费多少?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
html制作网站的步骤有哪些,iapp如何添加网页?
北京的网站制作公司有哪些,哪个视频网站最好?
如何通过主机屋免费建站教程十分钟搭建网站?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
如何快速辨别茅台真假?关键步骤解析
*请认真填写需求信息,我们会在24小时内与您取得联系。