jQuery中的Ajax
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
AJAX 不是新的编程语言,而是一种使用现有标准的新方法。
AJAX 是与服务器交换数据并更新部分网页的技术,在不重新加载整个页面的情况下。
ajax() 方法通过 HTTP 请求加载远程数据。
该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get,
.
p
o
s
t
等
。
.post 等。
.post等。.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。
$.ajax() 函数返回它创建的 XMLHttpRequest 对象。通常 jQuery 只在内部处理并创建这个对象,但用户也可以通过 xhr 选项来传递一个自己创建的 xhr 对象。返回的对象通常已经被丢弃了,但依然提供一个底层接口来观察和操控请求。比如说,调用对象上的 .abort() 可以在请求完成前挂起请求。
.
a
j
a
x
(
)
函
数
依
赖
服
务
器
提
供
的
信
息
来
处
理
返
回
的
数
据
。
如
果
服
务
器
报
告
说
返
回
的
数
据
是
X
M
L
H
t
t
p
R
e
q
u
e
s
t
,
那
么
返
回
的
结
果
就
可
以
用
普
通
的
X
M
L
H
t
t
p
R
e
q
u
e
s
t
方
法
或
者
j
Q
u
e
r
y
的
选
择
器
来
遍
历
。
如
果
见
得
到
其
他
类
型
,
比
如
H
T
M
L
,
则
数
据
就
以
文
本
形
式
来
对
待
。
通
过
d
a
t
a
T
y
p
e
选
项
还
可
以
指
定
其
他
不
同
数
据
处
理
方
式
。
除
了
单
纯
的
X
M
L
,
还
可
以
指
定
h
t
m
l
、
j
s
o
n
、
j
s
o
n
p
、
s
c
r
i
p
t
或
者
t
e
x
t
。
其
中
,
t
e
x
t
和
x
m
l
类
型
返
回
的
数
据
不
会
经
过
处
理
。
数
据
仅
仅
简
单
的
将
X
M
L
H
t
t
p
R
e
q
u
e
s
t
的
r
e
s
p
o
n
s
e
T
e
x
t
或
r
e
s
p
o
n
s
e
H
T
M
L
属
性
传
递
给
s
u
c
c
e
s
s
回
调
函
数
。
所
有
现
代
浏
览
器
(
I
E
7
+
、
F
i
r
e
f
o
x
、
C
h
r
o
m
e
、
S
a
f
a
r
i
以
及
O
p
e
r
a
)
均
支
持
X
M
L
H
t
t
p
R
e
q
u
e
s
对
象
(
I
E
5
和
I
E
使
用
的
是
A
c
t
i
v
e
X
O
b
j
e
c
t
)
。
1.0
用
J
a
v
a
S
c
r
i
p
t
中
的
X
M
L
H
t
t
p
R
e
q
u
e
s
t
对
象
在
服
务
器
中
获
取
到
数
据
后
提
交
到
页
面
表
单
数
据
。
创
建
X
M
L
H
t
t
p
R
e
q
u
e
s
t
对
象
的
语
法
:
v
a
r
i
a
b
l
e
=
n
e
w
X
M
L
H
t
t
p
R
e
q
u
e
s
t
(
)
;
老
版
本
的
I
n
t
e
r
n
e
t
E
x
p
l
o
r
e
r
(
I
E
5
和
I
E
6
)
使
用
A
c
t
i
v
e
X
对
象
:
v
a
r
i
a
b
l
e
=
n
e
w
A
c
t
i
v
e
X
O
b
j
e
c
t
(
"
M
i
c
r
o
s
o
f
t
.
X
M
L
H
T
T
P
"
)
;
1.1
用
j
Q
u
e
r
y
中
的
.ajax() 函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是XMLHttpRequest,那么返回的结果就可以用普通的XMLHttpRequest方法或者 jQuery 的选择器来遍历。如果见得到其他类型,比如 HTML,则数据就以文本形式来对待。 通过 dataType 选项还可以指定其他不同数据处理方式。除了单纯的 XML,还可以指定 html、json、jsonp、script 或者 text。 其中,text 和 xml 类型返回的数据不会经过处理。数据仅仅简单的将 XMLHttpRequest 的 responseText 或 responseHTML 属性传递给 success 回调函数。 所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均支持XMLHttpReques对象(IE5和IE使用的是ActiveXObject)。 1.0 用JavaScript中的XMLHttpRequest对象在服务器中获取到数据后提交到页面表单数据。 创建 XMLHttpRequest 对象的语法: variable=new XMLHttpRequest(); 老版本的Internet Explorer(IE5 和 IE6)使用ActiveX对象:variable=new ActiveXObject("Microsoft.XMLHTTP"); 1.1 用jQuery中的
.ajax()函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是XMLHttpRequest,那么返回的结果就可以用普通的XMLHttpRequest方法或者jQuery的选择器来遍历。如果见得到其他类型,比如HTML,则数据就以文本形式来对待。通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定html、json、jsonp、script或者text。其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数。所有现代浏览器(IE7+、Firefox、Chrome、Safari以及Opera)均支持XMLHttpReques对象(IE5和IE使用的是ActiveXObject)。1.0用JavaScript中的XMLHttpRequest对象在服务器中获取到数据后提交到页面表单数据。创建XMLHttpRequest对象的语法:variable=newXMLHttpRequest();老版本的InternetExplorer(IE5和IE6)使用ActiveX对象:variable=newActiveXObject("Microsoft.XMLHTTP");1.1用jQuery中的.ajax({settings})方法,type:类型,“GET/POST”, URL:发送请求的地址如果是绝对路径,协议和主机和端口通常必须匹配文档对应的内容,否则跨域的请求通常会报错),async:设置异步,(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行(Ajax 的第一个字母是 asynchronous 的开头字母,这意味着所有的操作都是并行的,完成的顺序没有前后关系。
.
a
j
a
x
(
)
的
a
s
y
n
c
参
数
总
是
设
置
成
t
r
u
e
,
这
标
志
着
在
请
求
开
始
后
,
其
他
代
码
依
然
能
够
执
行
。
强
烈
不
建
议
把
这
个
选
项
设
置
成
f
a
l
s
e
,
这
意
味
着
所
有
的
请
求
都
不
再
是
异
步
的
了
,
这
也
会
导
致
浏
览
器
被
锁
死
)
。
1.2
把
表
单
序
列
化
,
s
e
r
i
a
l
i
z
e
(
)
序
列
表
单
内
容
为
字
符
串
,
用
于
A
j
a
x
请
求
,
而
s
e
r
i
a
l
i
z
e
A
r
r
a
y
(
)
序
列
化
表
单
元
素
(
类
似
′
.
s
e
r
i
a
l
i
z
e
(
)
′
方
法
)
返
回
J
S
O
N
数
据
结
构
数
据
,
注
意
:
此
方
法
返
回
的
是
J
S
O
N
对
象
而
非
J
S
O
N
字
符
串
。
需
要
使
用
插
件
或
者
第
三
方
库
进
行
字
符
串
化
操
作
,
返
回
的
J
S
O
N
对
象
是
由
一
个
对
象
数
组
组
成
的
,
其
中
每
个
对
象
包
含
一
个
或
两
个
名
值
对
—
—
n
a
m
e
参
数
和
v
a
l
u
e
参
数
2.0
j
Q
u
e
r
y
中
的
.ajax() 的 async 参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。强烈不建议把这个选项设置成 false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死)。 1.2 把表单序列化,serialize() 序列表单内容为字符串,用于 Ajax 请求,而serializeArray() 序列化表单元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据,注意:此方法返回的是JSON对象而非JSON字符串。需要使用插件或者第三方库进行字符串化操作,返回的JSON对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对——name参数和value参数 2.0 jQuery中的
.ajax()的async参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。强烈不建议把这个选项设置成false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死)。1.2把表单序列化,serialize()序列表单内容为字符串,用于Ajax请求,而serializeArray()序列化表单元素(类似′.serialize()′方法)返回JSON数据结构数据,注意:此方法返回的是JSON对象而非JSON字符串。需要使用插件或者第三方库进行字符串化操作,返回的JSON对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对——name参数和value参数2.0jQuery中的.post()方法,(post请求通常拥有主体,同时它应该匹配使用setRequestHeader()制定的“Content-Type”头)
语法:
$.post(url, [data], [callback], [type])
描述:
通过远程 HTTP POST 请求载入信息。这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
参数说明:
url:发送请求地址。
data:待发送 Key/value 参数。
callback:发送成功时回调函数。
type:返回内容格式,xml, html, script, json, text, _default。
。