Fork me on GitHub

Ajax简述

一、AJAX

AJAX 是一个比较莫名的缩写单词:Asynchronous JavaScript + XML

AJAX包含以下五个部分:

  • 基于标准的表示技术,使用XHTML与CSS
  • 动态显示和交互技术,使用Document Object Model(文档对象模型)
  •  数据互换和操作技术,使用XML与XSLT
  • 异步数据获取技术,使用XMLHttpRequest
  •  而JavaScript 将以上的一切都结合在一起

 

二、创建XMLHttpRequest对象

统一创建方法:

//创建XMLHttpRequest对象
function createXmlHttpRequest(){

    if(window.XMLHttpRequest){//判断浏览器版本是不是IE7以上和其它浏览器
        return new XMLHttpRequest();
    }else if(window.ActiveXObject){//判断浏览器版本是不是IE5,IE6浏览器
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

工作原理

三、XMLHttpRequest方法

3.1、详细介绍

 四、XMLHttpRequest属性

4.1、readyState属性

4.2、status属性

4.3、其它属性

五、发送get响应

六、Post方式

七、简单例子

servlet

package 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 LoginServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String uname=request.getParameter("uname");
        boolean flag=false;
        if("accp".equalsIgnoreCase(uname)){
            flag=true;
            out.println(flag);
            System.out.println(flag+" "+uname);
        }else{
            out.println(flag);
            System.out.println(flag+" "+uname);
        }
        out.flush();
        out.close();
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doGet(request, response);
    }

}

页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户注册</title>
<script type="text/javascript">
//判断用户名
function checkuname(ouser){
    //取用户名的值
    var uname=ouser.value;
    //判断是否为空
    if(!uname){
        alert("用户名不能为空!");
        //ouser.focus();
        return false;
    }
/*     get方式
    //创建发送请求的url
    var url="LoginServlet?uname="+uname;
    //接收返回的XMLHttpRequest对象创建对象
    xmlHttpRequest=createXmlHttpRequest();
    //设置回调函数
    xmlHttpRequest.onreadystatechange=haoLeJiaoWo;
    //初始化xmlHttpRequest
    xmlHttpRequest.open("GET",url,true);
    //发送请求,因为是get方式,所以参数为null
    xmlHttpRequest.send(null);
*/
//post方式
//请求的url
var url="LoginServlet";
//创建xmlHttpRequest对象
xmlHttpRequest=createXmlHttpRequest();
//创建回调函数
xmlHttpRequest.onreadystatechange=haoLeJiaoWo;
//初始化
xmlHttpRequest.open("POST",url,true);
//设置请求头类型
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttpRequest.send("uname="+uname);

}
//回调函数
function haoLeJiaoWo(){
    //表示数据接收完成,并正确返回
    if(xmlHttpRequest.readstate=4 && xmlHttpRequest.status==200){
        //接收服务器返回的值这里为文本
        var result=xmlHttpRequest.responseText;
        //去掉字符串前后的空格
        result=result.replace(/(^\s*)|(\s*$)/g,"");
        //判断值
        if(result=="true"){
            alert("用户已经存在");
            return false;
        }else{
            alert("用户可以使用");
            return true;
        }
    }
}

//创建XMLHttpRequest对象
function createXmlHttpRequest(){

    if(window.XMLHttpRequest){//判断浏览器版本是不是IE7以上和其它浏览器
        return new XMLHttpRequest();
    }else if(window.ActiveXObject){//判断浏览器版本是不是IE5,IE6浏览器
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

</script>
</head>

<body>
<form action="LoginServlet" method="get">
<table align="center">
<tr>
<td>
<p>用户账户:
<input  type="text" name="uname" onblur="checkuname(this);"/>
</p>
</td>
</tr>
<tr>
<td>
<p>用户密码:
<input  type="password" name="passwd"/>
</p>
</td>
</tr>
<tr>
<td>
<p>确认密码:
<input  type="password" name="repasswd"/>
</p>
</td>
</tr>
<tr>
<td>
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
</html>

八、处理XML

 九、XML简单例子

 

package 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 doGetU extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public doGetU() {

    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)     throws ServletException, IOException {
        //设置响应为xml字符编码为UTF-8
        String uname=request.getParameter("uname");
        response.setContentType("text/xml;charset=utf-8");
        PrintWriter     out = response.getWriter();
        
        StringBuilder bd=new StringBuilder();
        bd.append("<userinfo>");
        bd.append("<username>");
        if(uname==null || uname.length()==0 ){
            bd.append("请选择用户");
        }else{
            bd.append(uname);
        }
        bd.append("</username>");
        bd.append("</userinfo>");
            out.println(bd.toString());
            out.flush();
            out.close();

    }

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

    }

}

页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ajax中xml处理</title>
<script type="text/javascript">
function checkUser(ouser){
    
    //获取下拉框的值
    var uname=ouser.value;
    //提交的URL get方式
    var url="doGetU?uname="+uname;
    //创建xmlHttpRequest对象
    xmlHttpRequest=createXmlHttpRequest();
    //设置回调函数
    xmlHttpRequest.onreadystatechange=haoLeJiaoWo;
    //初始化
    xmlHttpRequest.open("GET",url,true);
    //post方式
    //xmlHttpRequest.open("post",url,true);
    //xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    //发送数据get方式,可以没有参数
    xmlHttpRequest.send();
    //post发送参数
    //xmlHttpRequest.send("uname="+uname)
    
}
function haoLeJiaoWo(){
    //接收完成,正确返回
        
    if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
        var xml=xmlHttpRequest.responseXML;
        //判断是否为空
        if(xml){
            //获取useranem的子节点数组
            var userNodes=xml.getElementsByTagName("username");
            if(userNodes.length>0){
            var uname=userNodes[0].firstChild.nodeValue;
            document.getElementById("username").value=uname;
        }
        }
    }
    
}

function createXmlHttpRequest(){
    if(window.XMLHttpRequest){//判断浏览器版本IE7.0以上,或者其它的浏览器
        return new XMLHttpRequest();

    }else{//IE5.0,6.0
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}
</script>
</head>
<body>
    <form action="doGetU" method="get">
        <table>
            <tr>
                <td>请选择用户:</td>
                <td style="width:150px"><select name="user"
                    onchange="checkUser(this);">
                
                        <option value="accp">accp</option>
                        <option value="test">test</option>
                </select></td>
            </tr>
            <tr>
                <td>用户名:</td>
                <td><input type="text" id="username" style="width: 150px" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

 

posted @ 2015-03-22 21:51  森林森  阅读(930)  评论(0编辑  收藏  举报