`
还有也许
  • 浏览: 169259 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

快速理解Ajax(四)

    博客分类:
  • ajax
阅读更多

今天我们用xml来完成以前那个注册校验。希望大家能理解xml在Ajax中的作用。

首先还得改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 AJAXServlet extends HttpServlet {

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		//响应的Content-Type必须是text/xml 
		response.setContentType("text/xml;charset=gb2312");
		 try{
	            PrintWriter out=response.getWriter();
	            String old =request.getParameter("name");
	            //用StringBuilder的方式拼接xml格式,把需要传输的信息放在里面
	            StringBuilder builder=new StringBuilder();
	            builder.append("<message>");
	            if(old==null||old.length()==0){
	                builder.append("用户名不能为空").append("</message>");
	            }else{
	                String name=old;
	                if(name.equals("yanzhenwei")){
	                  builder.append("用户名["+name+"]已经存在,请换个名字").append("</message>");
	                }else{
	                  builder.append("用户名["+name+"]尚未存在,可以使用").append("</message>");
	                }
	                //输出
	                out.println(builder.toString());
	            }
	          }catch(Exception e){
	          e.printStackTrace();
	        }
	          

	    }
	    protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
	       doGet(request,response);
	    }

}

  接着就是修改js代码了,需要修改的地方我都用不同颜色的线标注了

//用户名校验的方法
//这个方法使用XMLHTTPRequest对象进行AJAX的异步数据交互
var xmlhttp;
function verify(){
    //1.使用dom的方式获取文本框中的值
    //document.getElementBuId("userName")是dom中获取元素节点的一种方法,一个元素节点对应HTML页面中的一个标签,如果<input>
    //.value可以获取一个元素节点的value属性值
    var userName = document.getElementById("userName").value;


    //2.创建XMLHttpRequest对象
    //这是XMLHttpRequest兑现使用中最为复杂的一步
    //需要这对IE和其他类型浏览器建立这个对象的不方式写不同的代码
    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){
         //针对IE5,IE5.5,IE6(IE7,IE8)
         //两个可以用于创建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){
           }
       }
  }


    //2 注册回调函数
    //注册回调函数时只需要函数名不要加括号
    //我们需要注册的是函数名称,如果加上括号,就把函数的返回值给注册上了,这是错误的
         xmlhttp.onreadystatechange = callback;

    //3设置连接信息
    //第一个参数表示http的请求方式。支持所有http的请求方式。主要使用get和post
    //第二个参数表示请求的url地址,get方式的参数也在url中
    //第三个参数表示采用异步还是同步方式交互,true表示异步
    //GET方式请求的代码
    //xmlhttp.open("GET","AJAXServer?name="+userName,true);

    //POST方式请求的代码
    xmlhttp.open("POST","AJAXXMLServer",true);
    //POST方式需要自己设置http的请求头
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    //POST方式发送数据
    xmlhttp.send("name="+userName);

    //4 发送数据,开始和服务器端进行交互
    //同步方式下,send这句话会在服务器设置回来后才执行完
    //异步方式,send这句话执行晚会立即完成

    //GET方式
    //xmlhttp.send(null);
}

//回调函数
function callback(){
   // alert(xmlhttp.readyState);
   //5接收响应数据
   //判断对象的状态是交互完成
    if(xmlhttp.readyState==4){
    //判断http的交互是否成功、
      if(xmlhttp.status==200){
          //获取服务器端返回的数据
          //使用responseXML的方式接受XML数据对象的Dom对象
          var domObj =xmlhttp.responseXML;
          if(domObj){

          //<message>1231234</message>
          //dom中利用getElementsByTagName可以根据标签名来获取元素节点,返回的是一个数组
          var messageNodes= domObj.getElementsByTagName("message");

          if(messageNodes.length>0){
          //获取message节点中的文本内容
          //message标签中的文本在dom中是message标签对应的元素的子节点,firstChild可以获取到当前节点的第一个子节点
          //通过以下方式就可以获得到文本内容所以对应的节点
          var textNode = messageNodes[0].firstChild;
            //对于文本节点来说,可以通过nodeValue的方式返回文本节点的文本内容
          var responseMessage = textNode.nodeValue;

          //将数据显示在页面上
          //通过dom方式找到div标签所对应的元素节点
          var divNode = document.getElementById("result");
          //设置元素节点中的html内容
          divNode.innerHTML=responseMessage;
          } else{
            alert("XML数据格式错误,原始文本内容为:"+xmlhttp.responseText);
          }
          }else{
            alert("XML数据格式错误,原始文本内容为:"+xmlhttp.responseText);
          }
      }else
      {
          alert("出错了");
      }
    }

}

  然后就OK了。

分享到:
评论

相关推荐

    快速理解Ajax(二)

    在本篇“快速理解Ajax(二)”中,我们将深入探讨Ajax的核心概念、工作原理及其在实际开发中的应用。 首先,我们要明确Ajax的核心组成部分: 1. **XMLHttpRequest对象**:它是Ajax的核心,负责在后台与服务器通信...

    四天学会ajax_ajax教程

    1. **基础概念**:首先,你需要理解Ajax的基本工作原理,包括它如何利用JavaScript发送异步请求到服务器,并处理响应数据。 2. **XMLHttpRequest对象**:Ajax的核心是XMLHttpRequest(XHR)对象,它是JavaScript的...

    四天学会ajax 快速上手

    在“四天学会Ajax 快速上手”的课程中,你将了解到以下关键知识点: 1. **XMLHttpRequest对象**:这是Ajax的基础,用于在后台与服务器进行通信。通过这个对象,你可以发送HTTP请求并接收响应,而不会中断用户的界面...

    Ajax快速入门

    这个教程将通过以上10个经典例子,结合实际的数据库文件,让你亲手实践,深入理解Ajax的用法和功能,从而快速上手Ajax开发。每个例子都将涵盖Ajax请求的创建、数据处理和页面更新等多个环节,确保你在实践中掌握Ajax...

    ajax例子 帮助初学者快速入门

    这个例子是一个简单的Ajax实现,适合初学者理解Ajax的工作原理。下面我们将详细解析这个例子中的关键知识点。 首先,我们看到一个名为`First.html`的HTML文件,其中包含了一个JavaScript函数`createXmlHttp()`。这...

    Ajax中文手册(快速上手)

    Ajax中文手册是为开发者提供的一份详细指南,旨在帮助初学者快速掌握Ajax的核心概念、使用方法以及相关API。这份手册以.chm(Microsoft编写的帮助文档格式)呈现,方便用户离线查阅。 Ajax的核心特性在于异步性,它...

    ajax培训视频完整版,用于就业培训的视频,由于文件过大,用百度网盘保存,让你快速学习ajax

    **Ajax技术详解** ...通过这个视频教程,学习者不仅可以理解Ajax的工作原理,还能掌握实际应用技巧,为就业做好准备。同时,由于文件过大,采用百度网盘分享,便于学员下载和观看,解决了大文件传输的问题。

    快速学习AJAX 的PDF

    ### 快速学习AJAX的关键知识点 #### 一、AJAX概述 - **定义**:AJAX(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以实现网页的部分更新,...

    ajax新手快速入门

    **四、jQuery与Ajax** 为了简化Ajax的使用,jQuery库提供了一个易于使用的接口`$.ajax()`。此外,还有`$.get()`, `$.post()`等简化的函数,使得开发者能更快速地实现Ajax功能。 **五、跨域问题** 由于同源策略...

    快速上手Ajax中文实例

    在快速上手Ajax的过程中,有几个关键知识点是必须掌握的: 1. **JavaScript基础**:Ajax的核心是JavaScript,因此熟悉JavaScript语法和DOM操作是必不可少的。你需要了解如何创建和执行JavaScript函数,以及如何通过...

    《深入理解Ajax基于JavaScript的RIA开发》配书源码

    《深入理解Ajax基于JavaScript的RIA开发》是一本专注于Web开发技术的专业书籍,其配书源码包含了一系列实际的示例和实践项目,旨在帮助读者深入掌握Ajax和基于JavaScript的富互联网应用(Rich Internet Applications...

    ajaxDEMO 适合ajax初学者

    本AjaxDEMO适合初学者学习,旨在提供一个基础的实践平台,帮助理解Ajax的工作原理及其在实际开发中的应用。** ### 1. Ajax基础知识 Ajax的核心是JavaScript对象XMLHttpRequest,它允许在后台与服务器端通信。当...

    理解Ajax:用Javascript构建Web程序(CHM电子书)

    本资料《理解Ajax:用Javascript构建Web程序》将深入探讨这一技术。 **JavaScript**是实现Ajax的核心,是一种广泛用于客户端的脚本语言,主要在浏览器环境中运行。JavaScript允许开发者动态地修改HTML文档、处理...

    ajax和js的web开发

    这份资料可能帮助开发者快速上手Ajax开发,理解如何创建异步请求,如何处理服务器响应,以及如何在实际项目中应用Ajax技术。 学习Ajax和JavaScript,不仅需要掌握基本的语法和API,还需要对HTTP协议、DOM操作有深入...

    Ajax快速通道.rar

    5. **Ajax请求的生命周期**:理解Ajax请求从创建到完成的整个过程,包括打开连接、发送请求、接收响应和处理结果等步骤,是编写高效Ajax代码的关键。 6. **Ajax库与框架**:除了原生的XMLHttpRequest,许多开发者会...

    json ajax ajax框架

    AJAX框架是为了简化AJAX开发而设计的工具,它们提供了一套封装好的API,帮助开发者快速、便捷地构建具有AJAX功能的应用。这些框架可以处理与服务器的通信、数据解析、错误处理等复杂任务,让开发者能够专注于应用...

    Ajax开发精要原码

    - `AJAX开发精要源码sourcecode`:书中提供的源码示例,可以帮助读者理解Ajax的实现细节,通过实践加深理解。 总之,《Ajax开发精要》是一本全面介绍Ajax技术的书籍,结合实际案例和源码分析,有助于初学者快速...

    完全手册:ASP.net.Ajax电子教程

    - 学习基础:理解AJAX工作原理,熟悉ASP.NET AJAX架构。 - 掌握控件:深入学习UpdatePanel、ScriptManager等控件的使用。 - 实战演练:通过实例学习如何创建局部刷新、异步调用服务器方法等。 - 高级话题:了解如何...

    Ajax Test Ajax Test

    **Ajax技术详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。这种技术结合了JavaScript、XML、DOM、CSS...在开发过程中,理解并熟练运用Ajax技术至关重要。

Global site tag (gtag.js) - Google Analytics