AJAX
1. AJAX概述
- AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和XML)
- 现在一般与json共同使用更多。
- AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。
- 比如搜索框的下拉列表、注册时表单未提交时就会有格式判断。
2 . AJAX的原理
XMLHttpRequest 是js的对象,是AJAX的基础,用于在后台和服务器交换数据。
XMLHttpRequest的创建
1 | var xmlhttp; |
打开与服务器的连接
open(method, url, async):
method:请求方式,通常为GET或POST;
url:请求的服务器地址,例如:/ajaxdemo1/AServlet,若为GET请求,还可以在URL后追加参数,在springMVC中即为@RequestMapping后的路径
async:这个参数可以不给,默认值为true,表示异步请求
1
xmlHttp.open("GET", "/ajaxdemo1/AServlet?username=zhangsan&password=123", true);
发送请求
1 | //get请求无参数 |
接收服务器响应
当请求发送出去后,服务器端Servlet就开始执行了,但服务器端的响应还没有接收到。接下来我们来接收服务器的响应。
onreadystatechange事件
XMLHttpRequest对象有一个onreadystatechange事件,它会XMLHttpRequest对象的状态发生变化时被调用。下面介绍一下XMLHttpRequest对象的5种状态:
- 0:创建了XMLHttpRequest对象,还未调用open()方法;
- 1:open()方法已调用,但还没调用send()方法;
- 2:send()方法已调用;
- 3:开始读取服务器响应;
- 4:读取服务器响应结束。
onreadystatechange事件会在状态为1、2、3、4时引发。但我们通常只关心最后一种状态(4),即读取服务器响应结束后,客户端才会做出改变。可以通过XMLHttpRequest对象的readyState属性来得到该对象的状态。
1 | xmlHttp.onreadystatechange = function() { |
服务器响应属性
- responseText:获得字符串形式的响应数据。
1 | document.getElementById("Div1").innerHTML=xmlhttp.responseText; |
- responseXML:获得XML形式的响应数据。
1 | xmlDoc=xmlhttp.responseXML; |
JQuery和AJAX
由于AJAX本身编程相对复杂,JQuery框架对其进行了简化,主要有以下几种方法:
关键字 | 简介 |
---|---|
$.ajax() | 提交AJAX请求 |
$.get() | 使用get方式提交ajax |
$.post | 使用post方式提交ajax |
load() | 最简单的调用ajax的方式 |
$.ajax() 方法
语法:
1 | jQuery.ajax([settings]) |
settings:可选。用于配置 Ajax 请求的键值对集合。可以通过 $.ajaxSetup() 设置任何选项的默认值,常用参数如下:
参数名 | 类型 | 说明 |
---|---|---|
url | String | 请求地址,默认值为当前页 |
data | String | 发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。必须为 Key/Value 格式。 |
type | String | 请求方式 (“POST” 或 “GET”), 默认为 “GET”。 |
success | Function | 请求成功后的回调函数。 |
dataType | String | 预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,,传递给回调函数。可用值:”xml”、”html”、”script”、”json”、”text” |
1 | $.ajax({ |
之后的$.get()与$.post()方法就是对本方法的简化,不用在标出参数名,但调用函数时要按照一定顺序。
$.get() 方法
语法:
1 | $.get(URL,callback); |
URL:希望请求的URL,可附带请求参数
callback:回调函数(可选)
1 | $.get( |
$.post() 方法
语法:
1 | $.post(URL,data,callback); |
URL:希望请求的URL
data:连同请求发送的数据(可选)
callback:回调函数(可选)
1 | $.post( |
load() 方法
从服务器加载数据,并把返回的数据放入备选元素中
语法:
1 | $(selector).load(URL,data,callback); |
URL:希望请求的URL
data:连同请求发送的数据(可选)
callback:回调函数(可选)