Ajax基本使用

=======Ajax基本使用==========


#什么是Ajax,优点,什么时候用

全称:Asynchronous JavaScript and XML

异步的JavaScript和XML应用

Ajax请求,服务器返回的是纯数据,不是HTML页面

浏览器发请求1--->Tomcat服务器处理-->返回给浏览器

浏览器发请求2--->Tomcat服务器处理-->返回给浏览器

异步特点:请求2可以在请求1没处理返回情况下发出

优点:异步处理;

      提升用户体验(在页面不刷新情况下,处理请求,改变页面部分显示)

      提升请求的处理效率

选用标准:避免整个页面频繁刷新;实现局部处理刷新


#Ajax使用

XMLHttpRequest作用:发送请求,接收响应结果(内置在浏览器)

##XMLHttpRequest对象使用

-new XMLHttpRequest();//firefox,chrome

-new ActiveXObject("Microsoft.XMLHttp");//IE

-open(请求类型,url,同步异步);//创建请求

-send(post数据);//发送请求

-responseText;//获取服务器返回的内容

-responseXML;//获取服务器返回的XML内容

-readyState;//Ajax请求处理状态0-4

 0:请求未初始化,1:请求未发送;2:请求发送完毕  3:请求正在处理;4:请求处理完毕

-onreadystatechange:事件

-status;//服务器响应HTTP CODE 200正确


#示例代码

demo1.html

<html>
  <head>
    <title>demo1.html</title>	
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript">
      //获取XMLHttpRequest对象
      function getXhr(){
        var xhr = null;
        if(window.XMLHttpRequest){
          xhr = new XMLHttpRequest();
        }else{
          xhr = new ActiveXObject("Microsoft.XMLHttp");
        }
        return xhr;
      }
      
      //发送请求
      function sendRequest1(){
        var xhr = getXhr();//获取XMLHttpRequest对象
        //alert(xhr);
        
        xhr.open("get","hello.do",true);//创建请求
        
        //注册回调函数
        xhr.onreadystatechange = function(){
          //解析结果,刷新页面处理
          //alert(xhr.readyState)
          if(xhr.readyState==4 && xhr.status==200){
            var msg = xhr.responseText;//获取返回的信息
            alert(msg);
          }
        }
        
        //参数对post有效,get写null
        xhr.send(null);//发送请求
      }
    </script>
    <script type="text/javascript">
      //失去焦点时,用户名检测 
      function sendRequest2(){
        //获取请求参数
        var name = document.getElementById("name").value;
        //alert(name);
        var s1 = document.getElementById("name_span");
        if(name==""){
          s1.innerHTML = "用户名为空";
          return ;
        }
        
        //发送ajax请求
        var xhr = getXhr();
        //alert(xhr);
        //var url = "check.do?name="+name;
        //xhr.open("get",url,true);
        xhr.open("post","check.do",true);
        //post请求时,须添加此消息头,否则参数为null
        xhr.setRequestHeader("content-type",
            "application/x-www-form-urlencoded");
        
        xhr.send("name="+name+"&age=1");
        //友好提示
        s1.innerHTML = "正在检测...";
        
        xhr.onreadystatechange = function(){
          //alert(xhr.readyState);
          if(xhr.readyState==4&&xhr.status==200){
             var msg = xhr.responseText;
             s1.innerHTML = msg;
          }
        };
      }
    </script>
  </head>
  
  <body>
    <input type="button" id="btn1" value="发送ajax请求"
      οnclick="sendRequest1();"/>
    <hr/>
    <input type="text" id="name" οnblur="sendRequest2();"/>
    <span id="name_span"></span>
  </body>
</html>

HelloServlet.java

package com.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 HelloServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		res.setContentType("text/html;charset=utf-8");
		PrintWriter pw = res.getWriter();
		System.out.println("哈喽 ajax");
		pw.print("哈喽 ajax");
		pw.close();
	}
	
}

CheckServlet.java

package com.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 CheckServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		res.setContentType("text/html;charset=utf-8");
		//接收请求参数
		String name = req.getParameter("name");
		//get解决乱码方法
		//name = new String(name.getBytes("iso8859-1"),"utf-8");
		System.out.println(name);
		String age = req.getParameter("age");
		System.out.println(age);
		
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		//检查
		PrintWriter pw = res.getWriter();
		if("scott".equals(name)){
			//用户名被占用
			pw.print(name+":用户名被占用");
		}else{
			//用户名可用
			pw.print(name+":用户名可用");
		}
		pw.close();
	}
	
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值