jQuery中AJAX操作

同步请求和异步请求:

同步请求: 发送方发出数据后,等接收方回应以后才发下一个数据的通讯方式

异步请求: 发送方发出数据后,不等接收方回应,接着发送下一个数据的通讯方式

区别:

同步:

  1. 使用通过单个线程调用服务;该线程发送请求,在服务运行时阻塞,并且等待响应

2.如果是使用者在服务运行的过程中阻塞时崩溃了,当它重新启动时,将无法重新连接到正在进行的调用,所以响应丢失了.使用者必须重新调用过程,并且期望这次不会崩溃

异步:

1.使用者通过两个调用服务: 一个线程发送请求,而另一个单独的线程接收响应

2.如果使用者在发送了请求之后等响应是崩溃了,当它重新启动时,可以继续响应,所以响应不会丢失

1、AJAX简介

1.定义: 异步JavaScript及XML(Asynchronous JavaScript And XML).它是一系列交互式网页应用技术的结合体,包含知识有:

1)基于XHTML和CSS标准的表示

2)使用Document Object Model(DOM)进行动态显示和交互

3)使用XMLHttpRequest与服务器进行异步通信

4)使用JavaScript绑定一切

2.AJAX是一种用于创建快速动态网页技术

3.通过在后台与服务器进行少量数据交换,AJAX可以使用网页实现异步更新.这意味着可以在不重新加载整个网页情况下,对网页的某个部分进行更新;而传统的网页(不使用AJAX)如果需要更新内容,必须重载整个页面.

XMLHttpRequest:是AJAX的核心对象,用于实现发送和接收HTTP请求与响应信息

1.open(method,uri,async,[username],[password]) -> 建立到服务器的新请求

method -> 请求方式(get, post , put, delete或head)

uri -> 请求的服务器地址

async -> 设置异步或同步,true(默认)/false

根据需要可传username和password给服务器进行用户验证

2.setRequestHeader(header, value) -> 设置请求的头信息,当readyState 属性值为1时, 可以在调用open()方法后调用这个方法,否则将得到一个异常

3.getResponseHeader() -> 用于检索响应的头部值.但readyState属性值为3或4时,可以调用此方法, 否则返回一个空字符串. 此外还可以通过getAllResponseHeaders()方法获取所有的 HttpRespons的头部信息

4.send([data]) -> 向服务器发送了请求, 若为POST请求,可以通过参数data传递数据给服务器,若不传递参数可以显示的调用send(null),等同于send();

//设置表单传输的编码格式,若为POST传值,这要显示设置

req.setRequestHeader("Content-type","application/x-www-form-urlencoded");

application/x-www-form-urlencoded: 标准的编码格式,数据被编码为名称/值对

5.readyState属性 -> 提供当前HTML的就绪状态,有0-4个状态

0: 未初始化状态,创建了XMLHttpRequest对象,但未初始化

1: 准备发送状态,调用了XMLHttpRequest对象的open()方法,并且XMLHttpRequest对象已经准备好将一个请求发送到服务器端

2: 已发送状态,已经通过send()方法把一个请求发送到服务器端,但还没收到响应

3: 正在接收状态,已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收到

4: 完成响应状态, 已经完成了HttpRequest响应的接收

6.status属性 -> 返回HTTP状态代码,如200,400. readyState属性值为3或4时才可用

7.statusText属性 -> 返回HTTP状态代码对应的文本如200->ok, 404->Not Found. readyState属性值为3或4时才可用

8.abort() -> 退出当前请求

9.responseText属性 -> 获得字符串形式的响应数据, 但readyState值为4时, 该属性才包含完整的响应信息

10.responseXML属性 -> 获得XML形式的响应数据, 但readyState属性值为4,且响应头部的Content-Type的MIME类型被自动为XML(text/xml或application/xml)时,该属性才有值并且被解析为一个XML文档,否则该属性值为null,如果返回的XML文档结果不良或未完成响应回传,该属性值也会为null

11.onreadystatechange -> 每当readyState属性值发生改变时,就会触发onreadychange事件,一般都通过该事件来触发回传处理函数

2、操作步骤

1.创建XMLHttpRequest对象

function getXmlHttp() {

var xmlHttp;

//检查浏览器是否支持XMLHttpRequest对象

if (window.XMLHttpRequest) {

// code for IE7+, Firefox, Chrome, Opera, Safari

xmlHttp = new XMLHttpRequest();

} else {

// code for IE6, IE5

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

return xmlHttp ;

}

2.初始化HTTP请求参数(定义open()方法)

3.发送请求(调用send()方法)

4.设置回调函数 -> 判断readyState是否为4以及status是否为200,然后通过responseText或responseXML获取服务器返回的数据

if (xmlhttp.readyState==4 && xmlhttp.status==200) {

document.getElementById("result").innerHTML = xmlHttp.responseText ;

}

3、jQuery中AJAX操作

1.$.load()

-> 加载HTML的内容

$("#content").load("loaded.html #s") ;

-> 筛选加载HTML内容

$("#content").load("loaded.html #s") ;

-> 传递参数(get)

$("#content").load("getDate.jsp?num=2&t="+Math.random()) ;

-> 传递参数(post)

$("#content").load("getDate.jsp #n",{num:3}) ;

-> 回调函数

function(data) {}

注:date返回的是HTML文档 alert(date) ;

注: 可以把以上的HTML文档转换为jQuery对象,然后访问HTML文档中的某部分内容,当要注意以下两点:

1)html文档中根据节点使用filter方法获取

2)html文档中子节点使用find方法获取

->回调函数的三个参数

function(responseText,textStatus,XMLHttpRequest) {}

responseText:同上面的data, 请求返回的内容

textStatus:请求的状态, 如success,error,timeout等

XMLHttpRequest:XMLHttpRequest对象

2.$.get()/$.post()

1)$.get(url,[data],[callback],[type])

2)$.post(url,[data],[callback],[type])

url:待载入页面的URL地址(某个servlet程序)

data:待发送 Key/value 参数

callback:载入成功时回调函数(请求成功后[success]才会触发此函数)

type:返回内容格式,xml, html, script, json, text, _default

3.$.ajax() -> 通过HTTP请求加载远程数据

ajax(url,[settings]) -> url: 一个用来包含发送请求的URL字符串

settings: AJAX 请求设置,所有选项都是可选的

4.$.ajaxSetup() -> 设置全局AJAX默认选项
5.$.parseJSON() -> 接收一个JSON字符串,返回解析后的对象,类似于eval()函数
6.$.getScript()/$.getJSON()

$.getScript():通过 HTTP GET请求载入并执行一个 JavaScript 文件

$.getJSON():通过 HTTP GET 请求载入 JSON 数据

回调函数: 成功载入JSON文件或JSON数据后触发该函数,可使用$.each()方法遍历对象和数组(查看API文档)

语法 -> $.each("数组或对象",回调函数(对象的成员或数组的索引,变量或内容){ })

退出each循环 -> return false ;

7.全局函数

1)ajaxComplete -> AJAX 请求完成时执行函数

2)ajaxError -> AJAX 请求发生错误时执行函数

3)ajaxSend -> AJAX 请求发送前执行函数(有回调函数)

4)ajaxStart -> AJAX 请求发送前执行函数

5)ajaxStop -> AJAX 请求结束时执行函数

6)ajaxSuccess -> AJAX 请求结束时执行函数(有回调函数)

3、jQuery中的AJAX相关工具函数

1.serialize() -> 序列表表格内容为字符串

2.serializeArray() ->序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据

3.$.param() ->将表单元素数组或者对象序列化,是.serialize()的核心方法