javascript解析ajax返回的xml和json格式数据实例详解(2)

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请求并解析

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjwsz.html