`
lufeng4321
  • 浏览: 58163 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用XMLHTTPRequest对象完成ajax

    博客分类:
  • ajax
阅读更多
第一步,编写HTML页面代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
    <script type="text/javascript" src="jslib/verifyxml.js"></script>
</head>
<body>
    <!--基于标准的习惯,标签要小写,标签要关闭,属性要小写,属性要值用双引号引起来-->
    username:<br/>
     <input type="text" id="userName" onblur="verify();"><br/>
    <!--ajax方式不需要name属性,需要一个ID属性-->
     <div id="result"></div>
<!--div和span,div独占一行,而span与其上下内容紧紧相连-->
</body>
</html>



第二步,编写实现AJAX的JS代码


//使用XMLHTTPRequest对象来完成ajax
var xmlhttp;
function verify(){
    //alert("hello racky");
    //1取得文本框的值
    var userName=document.getElementById("userName").value;
    //2创建 XMLHTTPRequest对象
    if(window.XMLHttpRequest){
       //firefox,Mozillar,opera,safari,ie7,ie8
        xmlhttp=new XMLHttpRequest();
        //针对某些特定版本的Mozillar浏览器的BUG进行的修正
        if(xmlhttp.overrideMimeType){
            xmlhttp.overrideMimeType("text/xml");
        }
    } else if(window.ActiveXObject){
        //ie6,ie5.5,ie5
        //两个可用于创建XMLHTTPRequest对象的控件名称,保存在一个JS数组中,排在前面的较新
        var activexName=['MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
        for(var i=0;i<activexName.length;i++){
            try{
                //创建成功则终止循环,创建失败则抛出异常,继续循环,尝试创建
                xmlhttp=new ActiveXObject(activexName[i]);
                break;
            }catch(e){

            }
        }
    }
    if(!xmlhttp){
        alert("Object XMlHttpRequest created failed");
        return;
    }else{
        //alert(xmlhttp);
        //alert("after create:"+xmlhttp.readyState)
    }
    //3注册回调函数
    //注册回调函数时,函数名后面不能加括号
    //将函数名注册,如果加上括号,会将函数的返回值注册上
    xmlhttp.onreadystatechange=callback;
    //4设置连接信息
    //设置与服务器的连接信息,HTTP的请求方式,URL,采用异步还是同步,TRUE是异步
    //xmlhttp.open('GET','ajaxserver?name='+userName,true);
    //POST方式请求的代码 ,URL中不能带参数
    xmlhttp.open('POST','AJAXXMLServer',true);
    //设置POST请求头
    xmlhttp.setRequestHeader('Content-Type',"application/x-www-form-urlencoded");
    //POST方式发送数据
    xmlhttp.send("name="+userName);
    //alert("after open:"+xmlhttp.readyState);
    //5发送数据,开始和服务器交互
    //同步方式下,send要等到服务器端数据返回后才执行,异步方式会立即完成执行
    //xmlhttp.send(null);
    //alert("after send:"+xmlhttp.readyState);

}
//回调函数  readyState一改变,回调函数就会调用
function callback(){
    //alert("load callback:"+xmlhttp.readyState);
    //判断对象的交互状态是完成
    if(xmlhttp.readyState==4){
        //判断http的交互是否成功
        if(xmlhttp.status==200){
            //获取服务器端返回的数据
            //使用responseText的方式来接受XML数据对象的DOM对象
            //alert("hello racky");
            var domObj=xmlhttp.responseXML;
            if(domObj){
                //alert(domObj);
                //<message></message>
                //根据getElementsByTagName获取元素节点,可能找到多个,返回的是数组
                var msgNodes=domObj.getElementsByTagName("message");
                //判断是否正确取得节点
                if(msgNodes.length>0){
                    //获取msgNode的文本内容
                    var responseMsg=msgNodes[0].firstChild.nodeValue;
                    //将数据显示在页面上
                    var divNode=document.getElementById('result');
                    divNode.innerHTML=responseMsg;
                    //获取服务器端输出的纯文本数据
                    //var responseText=xmlhttp.responseText;
                    //将数据显示在页面上
                    //var divNode=document.getElementById('result');
                    //divNode.innerHTML=responseText;
                }else{
                    alert("data xml error,the xml content:"+xmlhttp.responseText);
                }
            }else{
                alert("data xml error,the xml content:"+xmlhttp.responseText);
            }
        }
    }

}


第三步,编写服务端JAVA代码,这里仅仅是为了实现AJAX,因此服务端代码比较简单


package com.racky.servlet;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2009-6-29
* Time: 22:42:14
* To change this template use File | Settings | File Templates.
*/
public class AJAXXMLServer extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1取参数
        //2判断参数是否有问题
        //3校验
        //4将用户感兴趣的数据发回页面,而不是返回一个新的页面
        //xml,响应的 Content-Type必须是text/xml
        response.setContentType("text/xml;charset=utf-8");
        PrintWriter out=response.getWriter();
        String old=request.getParameter("name");
        StringBuilder builder=new StringBuilder();
        //将返回的数据拼装成XML格式
        builder.append("<message>");
        if(old==null||old.length()==0){
            builder.append("用户名不能为空").append("</message>");
        }else{
            String name=new String(old.getBytes("iso8859-1"));

            if(old.equals("racky")){
                builder.append("用户名["+old+"]已经存在").append("</message>");
            }else{
                builder.append("用户名【"+old+"】不存在,可以使用").append("</message>");
            }
        }
       out.println(builder.toString());
        System.out.println(builder.toString());
    }
}

第四步,配置web.xml文件


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
           version="2.5">
    <servlet>
        <servlet-name>AJAXXMLServer</servlet-name>
        <servlet-class>com.racky.servlet.AJAXXMLServer</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AJAXXMLServer</servlet-name>
        <url-pattern>/AJAXXMLServer</url-pattern>
    </servlet-mapping>
</web-app>
最后部署运行即可
分享到:
评论

相关推荐

    使用Ajax技术通过XMLHttpRequest对象完成首页登录功能

    主要介绍了使用Ajax技术通过XMLHttpRequest对象完成首页登录功能,很不错的尝试,需要的朋友可以参考下

    建一个XMLHttpRequest对象池

    在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest 对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建...

    AJAX XMLHttpRequest对象详解

    其核心是XMLHttpRequest对象,可以在不向服务器端提交整个页面的情况下,实现局部更新网页,它是AJAX的Web应用程序架构的一项关键技术。 基本属性: 基本方法: XMLHttpRequest五步法:  第一:创建...

    AJAX中同时发送多个请求XMLHttpRequest对象处理方法

    在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建一...

    AJAX 请求完成时执行函数。Ajax 事件。

    AJAX 请求完成时执行函数。Ajax 事件。 XMLHttpRequest 对象和设置作为参数传递给回调函数。

    Ajax通讯原理XMLHttpRequest

    XMLHttpRequest 是 AJAX 的关键 现在浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。 向后台请求数据readyState有五个状态0:服务器未初始化,1:服务器连接已建立,2请求已接受收,3请求...

    PHP培训教程之AJAX技术.docx

    使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与器进行交互。 PHP培训教程之AJAX技术全文共3页,当前为第1页。 通过HTTPRequest,一个web页面可以一个请求到web器并且接受web器返回的信息(不用重新...

    Ajax基础教程(扫描版)

    本书重点介绍ajax及相关的工具和技术,主要内容包括xmlhttprequest对象及其属性和方法、发送请求和处理响应、构建完备的ajax开发工具、使用jsunit测试javascript、分析javascript调试工具和技术,以及ajax开发模式和...

    ajax技术实现聊天室小程序

    Ajax的核心是JavaScript XmlHttpRequest对象。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术 使用: 首先登陆,输入你的昵称,进入聊天窗口。你可以打开两个浏览器,使用不同的昵称进入聊天...

    jquery不会自动回收xmlHttpRequest对象 导致了内存溢出

    之前一直都不曾注意到这一点,今天幸亏看了kuibono的文章,下面是kuibono给出的手动回收xmlHttpRequest对象的代码片断: 每次jquery的Ajax请求都会创建一个xmlHttprequest对象,理论上讲,长连接的请求是一个无限...

    struts-ajax.rar_ajax struts _struts ajax_struts ajax war

    struts与ajax结合的例子 Ajax打破了使用页面重载的惯例技术组合,使用XMLHttpRequest对象进行异步数据读取,完成了浏览器和服务器之间的异步通信

    PHP+Ajax实例+注释演示

    2, 定义创建XMLHttpRequest对象的方法(建立一个XMLHttpRequest对象),也是就var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//根据浏览器的不同有差异 3, 然后建立一个函数,用来指定载入的数据来源! 3.1,...

    Ajax聊天室 无刷新技术 支持很多浏览器

    Ajax的核心是JavaScript XmlHttpRequest对象。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术 使用: 首先登陆,输入你的昵称,进入聊天窗口。你可以打开两个浏览器,使用不同的昵称进入聊天...

    AJAX无刷新聊天室技术

    Ajax的核心是JavaScript XmlHttpRequest对象。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest对象可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。 ...

    AJAX的高效聊天室源码

    Ajax的核心是JavaScript XmlHttpRequest对象。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术 使用: 首先登陆,输入你的昵称,进入聊天窗口。你可以打开两个浏览器,使用不同的昵称进入聊天...

    Ajax课件学习(免费)

    1、XmlHttpRequest对象的open方法允许程序员用一个ajax调用向服务器发送请求。 2、method表示请求类型。最常用的有get和post请求。如果不向服务器端发送数据,只是请求服务器端的数据,这个时候可以用get方法。...

    《疯狂Ajax讲义(第3版).part3

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

Global site tag (gtag.js) - Google Analytics