ajax-异步与同步、开发步骤

Ajax概述

ajax:异步的js和xml,ajax技术可以在客户端与服务器进行数据的交互,它能使js访问服务器,而且是异步访问。

服务器给客户端的响应一般是整个页面,一个html完整页面,但在ajax中因为是局部刷新,服务器就不用再响应整个页面,而只是数据。

json:js提供的数据交换格式。

异步交互和同步交互

同步:表单提交和超链接

- 发一个请求,就要等待服务器响应结束,才能发第二个请求。

- 刷新的是整个页面

异步:

- 发一个请求后,无需等待服务器的响应,然后就可以发第二个请求。

- 可以使用js接受服务器的响应,然后用js实现局部刷新。

 

 

ajax可以和服务器进行数据的交互

- 传入纯文本

- 传输XM数据

- 传输json数据


ajax的优缺点

优点:用户体验好,传输的数据量比较小,减轻服务器端的压力

缺点:异步访问服务器端的次数明显增多,对服务器造成了压力

ajax开发步骤

- XMLHttpRequest对象,异步对象,使用该对象来完成异步发送请求和接收响应的操作

- 1、获取XMLHttpRequest对象,不同浏览器之间存在差异

 -- 大多数浏览器:var xhr = new XMLHttpRequest();

 -- IE6:var xhr = new ActiveXObject("Msxml2.XMLHTTP");

- 2、和服务器进行连接

 -- xhr.open("请求方式(GET、POST)","资源的路径","是否为异步请求(true、false)");

- 3、发送请求的数据

 -- xhr.send();

 -- GET请求:xhr.send(null);

 -- POST请求:xhr.send("username=zhangsan&password=123");

- 4、接收服务器端做出的响应

- 5、获取响应的数据

案例:通过异步请求向html标签中添加文本(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">
	function run(){
		//获取对象
		var xhr = createXMLHttpRequest();
		//打开连接
		xhr.open("GET","/AJAX/ajax1",true);
		//发送请求
		xhr.send(null);
		//监听xhr状态的改变
		xhr.onreadystatechange = function(){
			//双重判断
			if(xhr.readyState == 4 && xhr.status == 200){
				//接收数据
				var text = xhr.responseText;
			}
			document.getElementById("h3Id").innerHTML = text;
		}
		
		
		//获取XMLHttpRequest对象
		function createXMLHttpRequest(){
			try{
				return new XMLHttpRequest();
			}catch(e){
				try{
					return new ActiveXObjet("Msxml2.XMLHTTP");
				}catch(e){
					try{
						return new ActiveXObject("Microsoft.XMLHTTP");
					}catch(e){
						throw e;
					}
				}
			}
		}
	}		
	
	</script>
</head>
<body>
	<h3>异步请求测试</h3>
	<button onclick="run()">我是按钮</button>
	<h3 id="h3Id"></h3>
</body>
</html>

servlet

package com.servlet;

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

@WebServlet("/ajax1")
public class Ajax1Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().write("hello,ajax");
	}

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

}

POST请求提交

- 需要在open()方法请求方式修改"POST"
- 需要设置请求的头信息    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
- 发送send()    指定想要发送的数据

function run(){
		//获取对象
		var xhr = createXMLHttpRequest();
		//打开连接,POST请求
		xhr.open("POST","/AJAX/ajax1",true);
		//设置请求头信息
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		//发送请求
		xhr.send("username=zhangsan&password=123");
		//监听xhr状态的改变
		xhr.onreadystatechange = function(){
			//双重判断
			if(xhr.readyState == 4 && xhr.status == 200){
				//接收数据
				var text = xhr.responseText;
			}
			document.getElementById("h3Id").innerHTML = text;
		}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值