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 请求已完成(可以访问服务器响应并使用它)

我们要向这个 onreadystatechange 函数添加一条 If 语句,来测试我们的响应是否已完成(意味着可获得数据):

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();

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 01:20:48

javascript 解析ajax返回的xml和json格式的数据的相关文章

Jquery JavaScript解析Ajax返回的json数据(转)

最近在用jquery的ajax方法传递接收json数据时发现一个问题,那就是返回的data数据,有时候可以直接作为json数据使用,可有时候又不行. 经过网友指出,这个问题已经有了比较明确的结论,那就是jquery ajax方法的complete方法是不会处理dataType的,所以如果你是在complete里面试图直接用json数据是不可行的,必须先通过eval. $.ajax方法如下: Java代码 $.ajax({ type: “POST”, url: ctxRoot+’FolderAct

Android读写JSON格式的数据之JsonWriter和JsonReader

最近的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.最近打算找一份Android的工作,要继续拾起以前的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才开始办公.不说这些了,下面开始今天的正文. JSON格式的数据通常用于网络传输,尤其是在移动设备上与服务端进行数据交互.JSON与XML比较有明显的优势.XML格式的数据非常臃肿,传递少量的数据就要附带很多额外的格式数据.而JSON除了少量的符号外,全部是真正的数据,所以有越来越多的程序用JSON来取代XM

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:"xm

WebService传递XML数据 C#DataSet操作XML 解析WebService返回的XML数据

Webservice传递的数据只能是序列化的数据,典型的就是xml数据.   /// <summary>         /// 通过用户名和密码 返回下行数据         /// </summary>         /// <param name="UserName">用户名</param>         /// <param name="UserPwd">密码</param>    

在AFN中使用NSXMLParser解析服务器返回的XML数据

服务器返回的XML格式: 因为苹果没有提供直接获取xml开始标签和结束标签中间的字符串,虽然提供了 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string这个方法获取中间的字符串,但是这个字符串包含了空格和回车,所以要在这个方法中进行过滤. 源代码如下: 8 9 #import "RecommendController.h" 11 #import "SPHTTPRequestTool.h&

【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据

有时候,为了让数据可以“跨国经营”,尤其是HTTP Web有关的东东,会将数据内容以 XML 或 JSON 的格式返回,这样一来,不管客户端平台是四大文明古国,还是处于蒙昧时代的原始部落,都可以使用这些数据. 在WCF中实现将数据以XML或JSON格式返回有Y多种方法,不管你用什么方法,只要得到预期结果就好,米芾说了,笔可以八面出锋,当然了,人家指的是绘画. 这里,老周就挑两种方法来演示,仅供参考,没有考古价值,建议司马子长不要把本文收入<史记>. 第一种方法是用到 WebServiceHos

在C#中通过使用Newtonsoft.Json库来解析百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据

百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据,如下所示: http://api.map.baidu.com/geocoding/v3/?address=**省**市**区**路**号院**社区&output=json&ak=您的AK密钥 返回结果实例: { "status":0, "result": { "location":{"lng":116.79, "lat":

struts2返回json格式的数据

描述:当前端使用ajax发送请求到action时,如果需要返回json格式的数据,如对象集合.具体做法如下: 前端代码: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"

java XML转JSON格式

标签: XML转Json json 2014-05-20 20:55 6568人阅读 评论(6) 收藏 举报  分类: [J2SE基础](20)  代码如下所示,从这个例子中发现了代码库的重要性,如果建立一个自己的代码库,就可以直接从自己的代码库中取出来,这样需要什么就可以随时的取出来.代码库要保证的是规范性和正确性,并且有简单的模块注释. 这是今天在网上找到的XML转json格式的代码,人家封装的很快,节省了我很多时间啊. [java] view plain copy print? impor