Ajax 基本用法

ajax

1.是什么?

       AJAX即“Asynchronous Javascript And XML”(异步JavaScriptXML),是指一种创建交互式网页应用的网页开发技术 , 它并不是一种新的技术
 ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成。

  • 使用CSS和XHTML来表示。
  • 使用DOM模型来交互和动态显示。
  • 使用XMLHttpRequest来和服务器进行异步通信。
  • 使用javascript来绑定和调用。

在上面几中技术中,除了XmlHttpRequest对象以外,其它所有的技术都是基于web标准并且已经得到了广泛使用,XMLHttpRequest虽然目前还没有被W3C所采纳,但是它已经是一个事实的标准,因为目前几乎所有的主流浏览器都支持它。

2.有什么用?

        传统的网页,如果需要更新内容,必须加载整个网页。 如果只需要对网页上的某个内容进行局部刷新, 那么就需要使用到Ajax了。 它可以让我们无需重新加载全部网页内容,即可完成对某个部分的内容执行刷新 。 最典型的的例子, 莫过于大家在注册网站的时候, 输入的用户名,会自动的提示我们,该用户已被注册。

3.内部原理

       Ajax 并不是一项新技术。而是包装了现有的技术,然后使用他们来完成工作而已。 

那么现在给大家举个例子, 还是以咱们的判断用户名是否已被注册为例。  

     传统方式:

  1.  输入用户名,
  2. 点击一个按钮,校验。
  3. 把数据提交给服务器
  4. 服务器在后台帮助我们完成校验,并且反馈信息。
  5. 我们在浏览器上提示用户,给出结果

     Ajax方式:

        ajax方式与前面的方式其实从要做的事情来说,是一样的。 ajax也没有牛到,不用去访问服务器就知道你的用户名是否已被       占用。那么它是如何工作的呢?

  1.  通过JS 获取咱们的输入框文本内容 document.getElementById("username").value
  2.  通过XmlHttpRequest 去执行请求。 XmlHttpRequest 其实就是 XML + http + Request 的组合。
  3.  请求结束后,收到结果, 再使用 js 去完成提示。 
  4. 可以在顺便配合 css 样式来增加提示效果。

       xmlHttp对象创建方法:

//xmlHttp对象创建方法
		function ajaxFunction(){
			   var xmlHttp;
			   try{ // Firefox, Opera 8.0+, Safari
			        xmlHttp=new XMLHttpRequest();
			    }catch (e){
				   try{// Internet Explorer
				         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
				      }catch (e){
					      try{
					         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
					      }catch (e){}
				      }
			    }
	
				return xmlHttp;
			}

请求状态监听函数:

  
			    /*readyState:
			    	     0: 请求未初始化
						1: 服务器连接已建立
						2: 请求已接收
						3: 请求处理中
						4: 请求已完成,且响应已就绪
			      status:
			    	  200: "OK"
			    	  404: 未找到页面
				*/
				//每当 readyState 改变时,就会触发 onreadystatechange 事件,类似于注册监听
	     	   request.onreadystatechange = function(){
			    
			     //请求完成,并且响应就绪,并且返回的状态码为200
	    		   if(request.readyState == 4 && request.status == 200){
	    			   alert(request.responseText);
	    		   }
	    	   }

4.简单样例:get&post 

get.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Insert title here</title>
	<script type="text/javascript">
	
	   //xmlHttp对象创建方法
		function ajaxFunction(){
			   var xmlHttp;
			   try{ // Firefox, Opera 8.0+, Safari
			        xmlHttp=new XMLHttpRequest();
			    }
			    catch (e){
				   try{// Internet Explorer
				         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
				      }
				    catch (e){
				      try{
				         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				      }
				      catch (e){}
				      }
			    }
	
				return xmlHttp;
			 }
	      function get(){
	    	  
	    	  //1.获取xmlHttp对象
	    	   var request = ajaxFunction();
	    	  
	    	  //2.发送请求
	    	  // 3个参数: 请求方法是  请求路径   true---异步请求    false----同步请求
	    	  //.open(method,url,true/false);
	    	   request.open("GET","AjaxServlet?name=qg&age=19",true); //指定请求方法,和要请求的资源
	    	   
	   
	    	   
	    	   request.send(); //发送
	    	   
	    	   
			    /*readyState:
			    	     0: 请求未初始化
						1: 服务器连接已建立
						2: 请求已接收
						3: 请求处理中
						4: 请求已完成,且响应已就绪
			      status:
			    	  200: "OK"
			    	  404: 未找到页面
				*/
				//每当 readyState 改变时,就会触发 onreadystatechange 事件,类似于注册监听
	     	   request.onreadystatechange = function(){
			    
			     //请求完成,并且响应就绪,并且返回的状态码为200
	    		   if(request.readyState == 4 && request.status == 200){
	    			   alert(request.responseText);
	    		   }
	    	   }
	    
	      }
	      
	</script>
	</head>
	<body>
	    <a href="" onclick="get()"><h3>ajaxGet异步请求</h3></a>
	    <div id="myDiv">
	    
	    </div>
	</body>
</html>

post.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Insert title here</title>
	<script type="text/javascript">
	   //xmlHttp对象创建方法
		function ajaxFunction(){
			   var xmlHttp;
			   try{ // Firefox, Opera 8.0+, Safari
			        xmlHttp=new XMLHttpRequest();
			    }catch (e){
				   try{// Internet Explorer
				         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
				      }catch (e){
					      try{
					         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
					      }catch (e){}
				      }
			    }
	
				return xmlHttp;
			}
	    function post(){
	    	
	    	//获取 xmlHttp对象
	    	var request = ajaxFunction();
	    	
	    	//发送数据
	    	request.open("POST","AjaxServlet",true);
	    	
  			request.onreadystatechange = function(){
	    		
	    		if(request.readyState == 4 && request.status == 200){
	    			alert(request.responseText);
	    		}
	    	}
	    	
  	
	    	//如果是post请求并且带有数据,需要添加请求头,说明提交的数据是经过url编码的表单
	    	request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	    	request.send("name=qg&age=19");
	    	
	  
	    	
	    }
	   
	</script>
	</head>
	<body>
	    <a href="" onclick="post()"><h3>ajaxPost异步请求</h3></a>
	    <div id="myDiv">
	    
	    </div>
	</body>
</html>

AjaxGetServlet.java

package ajaxServlet;

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

/**
 * Servlet implementation class AjaxServlet
 */
public class AjaxServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//编码
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		
		//get请求解决中文乱码
		//name = new String(name.getBytes("iso-8859-1"),"utf-8");
		
		response.getWriter().write(name + ":" +age + "又回来了!");
		
		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值