通过HTTP请求加载远程数据
jQuery底层AJAX实现。简单易用得高层实现间$.get,$.post等。
$.ajax()返回其创建的XMLRequest对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。
$.ajax()只有一个参数:参数key/value对象,包含各配置及回调函数信息。
注意:如果你制定了dataType选项,请确保服务器返回正确的MIME信息,(如xml返回"text/xml")。错误的MIME类型可能导致不可预知的错误。
注意:如果dataType设置为“script”,那么在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
jQuery1.2中,您可以跨域加载JSON数据,使用时需将数据类型设置为JSONP。使用JSONP形式调用函数时,如“myurl?callback=?”jQuery将自动替换为?为正确的函数名,以执行回调函数。数据类型设置为"jsonp"时,jQuery将自动调用回调函数。
返回值:XMLHttpRequest
参数:options(可选):AJAX请求设置。所有选项都是可选的。
选项:async(Boolean):(默认:true)默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。
beforeSend(Function):发送请求前可以修改XMLHttpRequest对象的函数,如添加定义HTTP头。XMLHttpRequest对象是唯一的参数。这是一个Ajax事件。如果返回false可以取消本次ajax请求。
function(XMLHttpRequest) {
this;// 调用本次AJAx请求时传递的options参数
}
cache(Boolean):(默认:true,dataType为scipt时默认为false)jQuery1.2新功能,设置为false将不会从浏览器缓存中加载请求信息。
complete(Function):请求完成后回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。
function(XMLHttpRequest, textStatus) {
this; // 调用本次AJAX请求时传递的options参数
}
contentType(String):(默认:"application/x-www-form-urlncoded")发送信息至服务器时内容编码类型。默认值适合大多数应用场合。
data(Object, String): 发送到服务器的数据。将自动转换为请求字符串格式。GET请求中将附加在URL后。查看processData选项说明以禁止此自动转换。必须为Key/Value格式。如果为数组,jQuery将自动为不同值对应同一个名称。如果为数组,jQuery将自动为不通值对应同一个名称。如{foo:["bar1", "bar2"]}转换为'&foo=bar1&foo=bar2'。
dataFilter(Function):给Ajax返回的原始数据的进行预处理的函数。提供data和type两个参数:data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
function (data, type) {
// 对Ajax返回的原始数据进行预处理
return data // 返回处理后的数据
}
dataType(String):(默认值:只能判断xml或者html)预期服务器返回的数据类型。如果不指定,jQuery将自动根据HTTP包MIME信息返回responseXML或responseText,并作为回调函数传递,可用值:
"xml":返回XML文档,可用jQuery处理。
"html":返回纯文本HTML信息;包含的script标签会在插入dom时执行。
"script":返回纯文本JavaScript代码。不会自动缓存结果。除非设置了"cache"参数。注意:在远程请求时(不在同一域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回JSON数据。
"jsonp":JSONP格式。使用JSONP形式调用函数时,如"myurl?callback=?"jQuery将自动替换?为正确的函数名,以执行回调函数。
"text":返回纯文本字符串
error(Function):(默认:自动判断(xml或html))请求失败时调用时间。参数有以下三个:XMLHttpRequest对象、错误信息、捕捉的错误对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout","error","notmodified"和"parseerror"。
function(XMLHttpRequest, textStatus, errorThrown) {
// 通常textStatus和errorThrown之中
// 只有一个会包含信息
this;// 调用本次AJAX请求时传递的options参数
}
global(Boolean):(默认:true)是否触发全局AJAX事件。设置为false将不会触发全局AJAX事件,如ajaxStart或ajaxStop可用于控制不同的Ajax事件。
ifModified(Boolean):(默认:false)仅在服务器数据改变时获取新数据。使用HTTP包Last-Modified头信息判断。
jsonp(String):在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,不如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。
password(String):用于相应HTTP访问认证请求的密码
processData(Boolean):(默认:true)默认情况下,发送的数据将被转换为对象(技术上讲并非字符串)以配合默认内容类型"application/x-www-form-urlendoded"。如果要发送DOM树信息或其它希望转化的信息,请设置为false。
scriptCharset(String):只有当请求时dataType为"jsonp"或"script",并且type是"GET"才会用于强制修改charset。通常在本地和远程的内容编码不同时使用。
success(Function):请求成功后的回调函数。参数:由服务器返回,并根据dataType参数进行处理后的数据;描述状态的字符串。
function(data, textStatus) {
// data可能是xmlDoc,jsonObj,html,text等等...
this;// 调用本次AJAX请求时传递的options参数
}
timeout(Number):设置请求超时时间(毫秒)。此设置将覆盖全局设置。
type(String):(默认:"GET")请求方式("POST"或"GET"),默认为"GET"。注意:其它HTTP请求方法,如PUT和DELETE也可以使用,但仅部分浏览器支持。
url(String):(默认:当前页地址)发送请求的地址。
username(String):用于响应HTTP访问认证请求的用户名
xhr(Function):需要返回一个XMLHttpRequest对象。默认在IE下是ActiveXObject而其他情况下是XMLHttpRequest。
示例:
加载并执行一个JS文件。
jQuery代码:
$.ajax({
type: 'GET',
url: 'test.js',
dataType: 'script'
});
保存数据到服务器,成功时显示信息。
$.ajax({
type: 'POST',
url: 'some.php',
data: 'name=John&location=Boston',
success: function(msg) {
alert("Data Saved:" + msg);
}
});
装入一个HTML网页最新版本。
$.ajax({
url: "test.html",
cache: false,
success: function(html) {
$("#results").append(html);
}
});
同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。
var html = $.ajax({
url: "some.php",
async: false
}).responseText;
发送XML数据至服务器。设置processData选项为false,防止自动转换数据格式。
var xmlDocument = [create xml document];
$.ajax({
url: "page.php",
processData: false,
data: xmlDocument,
success: handleResponse
});