javascript解析ajax返回的xml和json格式数据实例详解
发布时间 - 2026-01-10 22:19:18 点击率:次本文实例讲述了javascript解析ajax返回的xml和json格式数据。分享给大家供大家参考,具体如下:

写个例子,以备后用
一、JavaScript 解析返回的xml格式的数据:
1、javascript版本的ajax发送请求
(1)、创建XMLHttpRequest对象,这个对象就是ajax请求的核心,是ajax请求和响应的信息载体,单是不同浏览器创建方式不同
(2)、请求路径
(3)、使用open方法绑定发送请求
(4)、使用send() 方法发送请求
(5)、获取服务器返回的字符串 xmlhttpRequest.responseText;
(6)、获取服务端返回的值,以xml对象的形式存储 xmlhttpRequest.responseXML;
(7)、使用W3C DOM节点树方法和属性对该XML文档对象进行检查和解析。
2、 实例:
(1)、发送ajax请求,以及解析返回的数据
<script type="text/javascript">
/* js版本发送ajax请求 */
function tellxml(){
// 创建对象,适合于firefox 和safari
var xmlhttpRequest= new XMLHttpRequest();
// 创建对象,适合于ie
// var xmlhttpRequest=new ActiveXObject("Msxml2.XMLHTTP");
// 请求发送路径 url
var url="http://localhost:18080/servlet/Servlet1?aa=10";
// Open方法绑定一个发送过程,但不发送数据。Open方法最后一个参数为true时表示异步,否则同步
xmlhttpRequest.open("POST",url,true);
// Send方法就是发送请求数据
xmlhttpRequest.send(url);
// readstate 就是一个xmlhttprequest 对象的一个属性,来记录服务器返回的状态
var readstate =xmlhttpRequest.readyState;
alert("状态:"+readstate);
// status 就是发送请求的状态,如果是200 则说明请求响应成功
var status=xmlhttpRequest.status;
alert("请求发送结果"+status);
// "responseText”是xmlhttpRequest的一个属性,来以字符串形式存储HTTP响应值;“responseXML”属性是以XML形式来记录HTTP响应的值。
var text= xmlhttpRequest.responseText;
alert(text);
// “responseXML”是xmlhttpRequest的一个属性,是以XML文档的对象来存储服务器端返回的值,可以使用W3C DOM节点树方法和属性对该XML文档对象进行检查和解析。
var xml= xmlhttpRequest.responseXML;
var values=xml.getElementsByTagName("info");
alert("值"+values);
alert("长度"+values.length);
// 解析获取内容
for(var i=0;i<values.length;i++){
var name1=values[i].getElementsByTagName("name")[0].firstChild.data;
alert(name1);
}
};
</script>
(2)、servlet 接受ajax 请求:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String aaa= request.getParameter("aa");
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("<name>"+"name2"+"</name>");
out.println("<age>"+22+"</age>");
out.println("</info>");
out.println("<info>");
out.println("<name>"+"name11"+"</name>");
out.println("<age>"+112+"</age>");
out.println("<name>"+"name22"+"</name>");
out.println("<age>"+222+"</age>");
out.println("</info>");
out.println("</infos>");
}
二、JavaScript 解析返回的json格式的数据:注意这里获取的是responseText 而不是responseXML也就是字符串而不是xml对象,因为返回的是json
1、发送请求,并解析返回的json格式的数据(这里返回的是json 对象的格式)
<script type="text/javascript">
/* js 解析返回的格式为 json */
function telljson(){
// 创建 xmlhttpRequest 对象
var xmlhttpRequest= new XMLHttpRequest();
//请求URL
var url="http://localhost:18080/servlet/Servlet3?aa=10";
// 将请求过程绑定到 open 方法
xmlhttpRequest.open("POST",url,true);
// 发送请求
xmlhttpRequest.send(url);
// readstate 就是一个xmlhttprequest 对象的一个属性用来记录服务端响应的状态
var readstate =xmlhttpRequest.readyState;
alert("请求准备状态:"+readstate);
// status 服务器执行的状态
var status=xmlhttpRequest.status;
alert("请求发送结果"+status);
// responseText 对象为xmlhttpRequest 对象的一个属性,用来以字符串的方式存储服务器端返回的值。
var text= xmlhttpRequest.responseText;
alert("json text: "+text);
// 获取json 返回值
// 那边传的是json对象的格式的一个字符串,在前台首先将字符串转化为一个json格式的js对象
var json= eval("("+text+")");
// 通过eval() 方法将json格式的字符串转化为js对象,并进行解析获取内容
alert("age:"+json.age+"age1:"+json.age1);
};
</script>
2、servlet 接受请求,并返回数据
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 向ajax 返回json格式的数据
String aaa= request.getParameter("aa");
System.out.print("ajax 数据:"+aaa);
// 向客户端响应信息
response.setCharacterEncoding("GBK");
response.setContentType("text/json");
PrintWriter out= response.getWriter();
// 这里组装json对象的格式,并转化为json格式的字符串返回。
String stu="{age:12,age1:23,age2:33}";
out.print(stu);
out.flush();
out.close();
}
三、JavaScript 解析返回的json数组格式的数据:
1、发送ajax请求
<script type="text/javascript">
/* js 解析返回的格式为 json */
function telljson(){
// 创建xmlhttpRequest对象
var xmlhttpRequest= new XMLHttpRequest();
//请求url
var url="http://localhost:18080/servlet/Servlet3?aa=10";
// open 方法绑定请求路径
xmlhttpRequest.open("POST",url,true);
// 发送ajax请求
xmlhttpRequest.send(url);
// readstate 就是一个xmlhttprequest 对象的一个属性用来记录服务器返回的状态信息
var readstate =xmlhttpRequest.readyState;
alert("请求准备状态:"+readstate);
// status 属性用来记录服务器返回的执行状态信息
var status=xmlhttpRequest.status;
alert("请求发送结果"+status);
// responseText属性用来以字符串方式存储服务器端返回的数据
var text= xmlhttpRequest.responseText;
alert("json text: "+text);
// 那边传的是json数组的格式,通过js的eval() 方法将json数组格式的字符串转化为js数组
var json= eval("("+text+")");
// 解析这个js数组,获取数值
var age=json[0].age;
var age1=json[0].age1;
var age2=json[0].age2;
alert("age:"+age+"age1"+age1+"age2"+age2);
};
</script>
四、ajax XMLHttpRequest 对象的三个属性以及open 和send方法:
(1)onreadystatechange 属性
onreadystatechange 属性存有处理服务器响应的函数。下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行设置:
xmlHttp.onreadystatechange=function()
{
// 我们需要在这里写一些代码
}
(2)readyState 属性
readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。
这是 readyState 属性可能的值:
| 状态 | 描述 |
|---|---|
| 0 | 请求未初始化(在调用 open() 之前) |
| 1 | 请求已提出(调用 send() 之前) |
| 2 | 请求已发送(这里通常可以从响应得到内容头部) |
| 3 | 请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应) |
| 4 | 请求已完成(可以访问服务器响应并使用它) |
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
// 从服务器的response获得数据
}
}
(3)responseText 属性
可以通过 responseText 属性来取回由服务器返回的数据。
在我们的代码中,我们将把时间文本框的值设置为等于 responseText:
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}
另外:
AJAX - 向服务器发送一个请求
要想把请求发送到服务器,我们就需要使用 open() 方法和 send() 方法。
open() 方法需要三个参数:
第一个参数定义发送请求所使用的方法(GET 还是 POST)。
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
① 无法使用缓存文件(更新服务器上的文件或数据库)
② 向服务器发送大量数据(POST 没有数据量限制)
③ 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
第二个参数规定服务器端脚本的 URL(该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务))。
第三个参数规定应当对请求进行异步地处理(true(异步)或 false(同步))。
send() 方法可将请求送往服务器。如果我们假设 HTML 文件和 ASP 文件位于相同的目录,那么代码是这样的:
xmlHttp.open("GET","time.asp",true);
xmlHttp.send(null);
五、之前的实例都没有使用 XMLHttpRequest 对象的onreadystatechange 这个属性,下面看看这个属性的实例:
1、onreadystatechange 这个属性在前面也说了,就是在XMLHttpRequest 这个对象的 readyState 这个值改变的时候会执行。
2、发送ajax请求并解析
<script type="text/javascript">
/* js 解析返回的格式为 json */
function telljson(){
// 创建对象,适合于firefox 和safari
var xmlhttpRequest= new XMLHttpRequest();
//请求发送路径 url
var url="http://localhost:18080/servlet/Servlet3?aa=10";
// Open方法绑定一个发送过程,但不发送数据。Open方法最后一个参数为true时表示异步,否则同步
xmlhttpRequest.open("POST",url,true);
// Send方法就是发送请求数据
xmlhttpRequest.send(url);
//onreadystatechange 属性存有处理服务器响应的函数
xmlhttpRequest.onreadystatechange =function(){
//readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。
alert("状态改变了:"+xmlhttpRequest.readyState);
// 如果是4 请求已完成(可以访问服务器响应并使用它)
if(xmlhttpRequest.readyState==4){
var readstate =xmlhttpRequest.readyState;
alert("请求准备状态:"+readstate);
var status=xmlhttpRequest.status;
alert("请求发送结果"+status);
// "responseText”是xmlhttpRequest的一个属性,来以字符串形式存储HTTP响应值;“responseXML”属性是以XML形式来记录HTTP响应的值。
var text= xmlhttpRequest.responseText;
alert("json text: "+text);
// 获取json 返回值
// 那边传的是json数组的格式,这边解析后就是一个json数组
var json= eval("("+text+")");
var age=json[0].age;
var age1=json[0].age1;
var age2=json[0].age2;
alert("age:"+age+"age1"+age1+"age2"+age2);
}
}
};
</script>
3、servlet返回的数据
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// 向ajax 返回json格式的数据
String aaa = request.getParameter("aa");
System.out.print("ajax 数据:" + aaa);
// 向客户端响应信息
response.setCharacterEncoding("GBK");
response.setContentType("text/json");
PrintWriter out = response.getWriter();
// 这里使用 json 数组的格式
String stu = "[{age:12,age1:23,age2:33}]";
out.print(stu);
out.flush();
out.close();
}
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
更多关于JavaScript相关内容可查看本站专题:《JavaScript中ajax操作技巧总结》、《JavaScript操作XML文件技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数据结构与算法技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# javascript
# 解析
# ajax
# 返回
# xml
# json
# MySQL中查询json格式的字段实例详解
# Java开发工具-scala处理json格式利器-json4s详解
# 详解Python中如何将数据存储为json格式的文件
# javascript解析json格式的数据方法详解
# jsonp格式前端发送和后台接受写法的代码详解
# Json格式详解
# 的是
# 绑定
# 转化为
# 适合于
# 就会
# 格式为
# 客户端
# 文档
# 但不
# 用它
# 并使
# 服务端
# 返回值
# 而不是
# 这是
# 操作技巧
# 器上
# 还没有
# 在这里
# 相关内容
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速搭建安全的FTP站点?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
制作电商网页,电商供应链怎么做?
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Java解压缩zip - 解压缩多个文件或文件夹实例
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
LinuxCD持续部署教程_自动发布与回滚机制
网站优化排名时,需要考虑哪些问题呢?
详解Huffman编码算法之Java实现
北京专业网站制作设计师招聘,北京白云观官方网站?
Laravel如何实现文件上传和存储?(本地与S3配置)
香港服务器租用费用高吗?如何避免常见误区?
如何快速搭建虚拟主机网站?新手必看指南
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
如何在VPS电脑上快速搭建网站?
BootStrap整体框架之基础布局组件
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
如何彻底卸载建站之星软件?
如何注册花生壳免费域名并搭建个人网站?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
HTML 中动态设置元素 name 属性的正确语法详解
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
如何用AI帮你把自己的生活经历写成一个有趣的故事?
Laravel怎么上传文件_Laravel图片上传及存储配置
JavaScript如何实现倒计时_时间函数如何精确控制
用yum安装MySQLdb模块的步骤方法
如何为不同团队 ID 动态生成多个非值班状态按钮
制作旅游网站html,怎样注册旅游网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
文字头像制作网站推荐软件,醒图能自动配文字吗?
网站图片在线制作软件,怎么在图片上做链接?
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤

