XMLHTTPRequest处理返回XML数据和jQuery处理返回XML数据比较
2012-05-20 10:49
766 查看
在Ajax应用中,使用XMLHTTPRequest处理的请求后台可以返回给纯文本数据,也可以是XML数据,但是XML数
据比纯文本更好一些。可以在其中包含大量的数据,更可以使用dom4j这样的XML工具进行XML文本的解析,下面我们
通过两种方式,分别是纯JavaScript创建XMLHTTPRequest对象和Dom 解析XML,然后再使用jQuery处理XML对象,
比较一下就可以发现jQuery写Ajax应用的优势。
首先是JavaScript实现XML数据的代码
下面的是后台的servlet的代码
然后是jQuery的代码
可以发现,jquery的方法简单很多,所以建议使用后面的这种方法。
据比纯文本更好一些。可以在其中包含大量的数据,更可以使用dom4j这样的XML工具进行XML文本的解析,下面我们
通过两种方式,分别是纯JavaScript创建XMLHTTPRequest对象和Dom 解析XML,然后再使用jQuery处理XML对象,
比较一下就可以发现jQuery写Ajax应用的优势。
首先是JavaScript实现XML数据的代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>ajax1.html</title> <script type="text/javascript"> var xmlhttp; function verify(){//这个方法使用XMLHttpRequest对象来进行Ajax异步交互数据 //1.使用dom的方式获取文本框的内容 var userName = document.getElementById("userName").value; //2.创建XMLHTTPRequest对象 if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); }else if(window.ActiveXObject){ //针对ie6以下版本 var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; //两个可以用来创建XMLHTTPRequest对象的控件,进行尝试创建 for(var i=0; i < activexName.length; i++){ try{ xmlhttp = new ActiveXObject(activexName[i]); break; }catch(e){ } } } //最后 确认xmlhttprequest对象创建成功 if(!xmlhttp){ alert("请更换更新版本的浏览器"); return; }else{ //2.注册回调函数,只需要函数名不需要加括号 xmlhttp.onreadystatechange = callback; //3.设置连接信息 xmlhttp.open("GET","/Ajax/servlet/AjaxXmlServer?name="+userName, true); //4.发送数据,开始和服务器端进行交互 xmlhttp.send(null); } } //回调函数 function callback(){ //判断对象交互完成 if(xmlhttp.readyState==4){ //判断http交互是否成功 if(xmlhttp.status==200){ //获取服务器的数据 //获取XML包装的的数据 var responseText = xmlhttp.responseXML; var messageNodes = responseText.getElementsByTagName("message"); var messageNode = messageNodes[0]; var text = messageNodes[0].firstChild.nodeValue; document.getElementById("div1").innerHTML=text; } } } </script> </head> <body> 用户名:<input type="text" id="userName" onblur="verify();"/><span id="div1" style="color: red"></span> <br/> 密码:<input type="password" id="password" /><br/> 邮箱:<input type="text" id="mail" /> </body> </html>
下面的是后台的servlet的代码
package com.bird.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AjaxXmlServer extends HttpServlet { /** * 返回XML数据 */ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/xml;charset=UTF-8"); String name = request.getParameter("name"); // name = new String(name.getBytes("ISO-8859-1"),"UTF-8"); PrintWriter out = response.getWriter(); StringBuilder builder = new StringBuilder(); builder.append("<message>"); if(name.equals("bird")){ builder.append("用户名"+name+"已经存在").append("</message>"); }else{ builder.append("用户名不存在,可以使用"+"</message>"); } out.println(builder.toString()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
然后是jQuery的代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>ajax.html</title> <script type="text/javascript" src="/Ajax/js/jquery-1.7.2.js"></script> <script type="text/javascript"> function test(){ //1.获取文本框中的值 var value = $("#userName").val(); //2.将文本框中的内容发送给后台服务器 //JavaScript定义一个简单的对象如下 //var obj = {name:"123",age:20}; $.ajax({ type: "POST",////http请求方式 url: "/Ajax/servlet/AjaxXmlServer", //服务器的地址 data: "name="+value, //发送的数据 dataType: "xml", //数据的返回类型 success: callback //注册回调函数 }); } function callback(data){//回调函数 //需要将data这个dom对象中的数据解析出来,首先需要将dom对象转换成jQuery对象 var jqueryObj = $(data); //获取messahe节点 var message = jqueryObj.children(); var text = message.text(); $("#div1").html(text); } </script> </head> <body> 用户名:<input type="text" id="userName" onblur="test();"/><span id="div1" style="color: red"></span> <br/> 密码:<input type="password" id="password" /><br/> 邮箱:<input type="text" id="mail" /> </body> </html>
可以发现,jquery的方法简单很多,所以建议使用后面的这种方法。
相关文章推荐
- jQuery入门学习三:XMLHttpRequest处理xml格式的返回数据
- XMLHttpRequest处理xml格式的返回数据(示例代码)
- AJAX-----07XMLHttpRequest对象的处理返回的JSON类型数据
- XMLHttpRequest处理xml格式的返回数据
- Ajax处理XML,XMLHttpRequest对象的创建和访问servlet并返回xml数据到页面展示
- XMLHttpRequest处理xml格式的返回数据(示例代码)
- AJAX-----06XMLHttpRequest对象的处理返回的XML类型数据
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
- jQuery的ajax()检验用户名;通过jQuery的load()/get()/post()方法实现;使用XMLHTTPRequest对象来进行AJAX的异步数据交互
- C# 利用HttpWebRequest模拟登陆获取数据设置Accept-Encoding为gzip,deflate后返回的网页是乱码处理
- 黄聪:jquery对ajax的error内的XMLHttpRequest返回的exception获取里面的信息
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
- jQuery利用XMLHttpRequest()和FormData()实现同时上传文件和数据
- jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
- jquery 的 ajax 在 非阻塞 时返回 XMLHttpRequest
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据
- asp.net中jquery(ajax)方式处理ashx返回的xml数据(转载)
- spring 统一处理http request请求返回数据,返回加密信息等
- Ajax 使用XMLHttpRequest对象发送数据和接收处理XML源代码
- xmlhttprequest返回数据 url中文传参