1、定義和用法
創(chuàng)新互聯(lián)建站主要從事網(wǎng)站設(shè)計制作、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)景洪,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
ajax() 方法通過 HTTP 請求加載遠(yuǎn)程數(shù)據(jù)。
該方法是 jQuery 底層 AJAX 實現(xiàn)。簡單易用的高層實現(xiàn)見 $.get, $.post 等。$.ajax() 返回其創(chuàng)建的 XMLHttpRequest 對象。大多數(shù)情況下你無需直接操作該函數(shù),除非你需要操作不常用的選項,以獲得更多的靈活性。
最簡單的情況下,$.ajax() 可以不帶任何參數(shù)直接使用。
2、語法
jQuery.ajax([settings])
setting參數(shù):
options
類型:Object
可選。AJAX 請求設(shè)置。所有選項都是可選的。
async
類型:Boolean
默認(rèn)值: true。默認(rèn)設(shè)置下,所有請求均為異步請求。如果需要發(fā)送同步請求,請將此選項設(shè)置為 false。
注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執(zhí)行。
beforeSend(XHR)
類型:Function
發(fā)送請求前可修改 XMLHttpRequest 對象的函數(shù),如添加自定義 HTTP 頭。
XMLHttpRequest 對象是唯一的參數(shù)。
這是一個 Ajax 事件。如果返回 false 可以取消本次 ajax 請求。
cache
類型:Boolean
默認(rèn)值: true,dataType 為 script 和 jsonp 時默認(rèn)為 false。設(shè)置為 false 將不緩存此頁面。
jQuery 1.2 新功能。
complete(XHR, TS)
類型:Function
請求完成后回調(diào)函數(shù) (請求成功或失敗之后均調(diào)用)。
參數(shù): XMLHttpRequest 對象和一個描述請求類型的字符串。
這是一個 Ajax 事件。
contentType
類型:String
默認(rèn)值: "application/x-www-form-urlencoded"。發(fā)送信息至服務(wù)器時內(nèi)容編碼類型。
默認(rèn)值適合大多數(shù)情況。如果你明確地傳遞了一個 content-type 給 $.ajax() 那么它必定會發(fā)送給服務(wù)器(即使沒有數(shù)據(jù)要發(fā)送)。
context
類型:Object
這個對象用于設(shè)置 Ajax 相關(guān)回調(diào)函數(shù)的上下文。也就是說,讓回調(diào)函數(shù)內(nèi) this 指向這個對象(如果不設(shè)定這個參數(shù),那么 this 就指向調(diào)用本次 AJAX 請求時傳遞的 options 參數(shù))。比如指定一個 DOM 元素作為 context 參數(shù),這樣就設(shè)置了 success 回調(diào)函數(shù)的上下文為這個 DOM 元素。
就像這樣:
$.ajax({ url: "test.html", context: document.body, success: function(){
$(this).addClass("done");
}});
data
類型:String
發(fā)送到服務(wù)器的數(shù)據(jù)。將自動轉(zhuǎn)換為請求字符串格式。GET 請求中將附加在 URL 后。查看 processData 選項說明以禁止此自動轉(zhuǎn)換。必須為 Key/Value 格式。如果為數(shù)組,jQuery 將自動為不同值對應(yīng)同一個名稱。如 {foo:["bar1", "bar2"]} 轉(zhuǎn)換為 'foo=bar1foo=bar2'。
dataFilter
類型:Function
給 Ajax 返回的原始數(shù)據(jù)的進(jìn)行預(yù)處理的函數(shù)。提供 data 和 type 兩個參數(shù):data 是 Ajax 返回的原始數(shù)據(jù),type 是調(diào)用 jQuery.ajax 時提供的 dataType 參數(shù)。函數(shù)返回的值將由 jQuery 進(jìn)一步處理。
dataType
類型:String
預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jQuery 將自動根據(jù) HTTP 包 MIME 信息來智能判斷,比如 XML MIME 類型就被識別為 XML。在 1.4 中,JSON 就會生成一個 JavaScript 對象,而 script 則會執(zhí)行這個腳本。隨后服務(wù)器端返回的數(shù)據(jù)會根據(jù)這個值解析后,傳遞給回調(diào)函數(shù)??捎弥?
"xml": 返回 XML 文檔,可用 jQuery 處理。
"html": 返回純文本 HTML 信息;包含的 script 標(biāo)簽會在插入 dom 時執(zhí)行。
"script": 返回純文本 JavaScript 代碼。不會自動緩存結(jié)果。除非設(shè)置了 "cache" 參數(shù)。注意:在遠(yuǎn)程請求時(不在同一個域下),所有 POST 請求都將轉(zhuǎn)為 GET 請求。(因為將使用 DOM 的 script標(biāo)簽來加載)
"json": 返回 JSON 數(shù)據(jù) 。
"jsonp": JSONP 格式。使用 JSONP 形式調(diào)用函數(shù)時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
"text": 返回純文本字符串
error
類型:Function
默認(rèn)值: 自動判斷 (xml 或 html)。請求失敗時調(diào)用此函數(shù)。
有以下三個參數(shù):XMLHttpRequest 對象、錯誤信息、(可選)捕獲的異常對象。
如果發(fā)生了錯誤,錯誤信息(第二個參數(shù))除了得到 null 之外,還可能是 "timeout", "error", "notmodified" 和 "parsererror"。
這是一個 Ajax 事件。
global
類型:Boolean
是否觸發(fā)全局 AJAX 事件。默認(rèn)值: true。設(shè)置為 false 將不會觸發(fā)全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。
ifModified
類型:Boolean
僅在服務(wù)器數(shù)據(jù)改變時獲取新數(shù)據(jù)。默認(rèn)值: false。使用 HTTP 包 Last-Modified 頭信息判斷。在 jQuery 1.4 中,它也會檢查服務(wù)器指定的 'etag' 來確定數(shù)據(jù)沒有被修改過。
jsonp
類型:String
在一個 jsonp 請求中重寫回調(diào)函數(shù)的名字。這個值用來替代在 "callback=?" 這種 GET 或 POST 請求中 URL 參數(shù)里的 "callback" 部分,比如 {jsonp:'onJsonPLoad'} 會導(dǎo)致將 "onJsonPLoad=?" 傳給服務(wù)器。
jsonpCallback
類型:String
為 jsonp 請求指定一個回調(diào)函數(shù)名。這個值將用來取代 jQuery 自動生成的隨機(jī)函數(shù)名。這主要用來讓 jQuery 生成度獨特的函數(shù)名,這樣管理請求更容易,也能方便地提供回調(diào)函數(shù)和錯誤處理。你也可以在想讓瀏覽器緩存 GET 請求的時候,指定這個回調(diào)函數(shù)名。
password
類型:String
用于響應(yīng) HTTP 訪問認(rèn)證請求的密碼
processData
類型:Boolean
默認(rèn)值: true。默認(rèn)情況下,通過data選項傳遞進(jìn)來的數(shù)據(jù),如果是一個對象(技術(shù)上講只要不是字符串),都會處理轉(zhuǎn)化成一個查詢字符串,以配合默認(rèn)內(nèi)容類型 "application/x-www-form-urlencoded"。如果要發(fā)送 DOM 樹信息或其它不希望轉(zhuǎn)換的信息,請設(shè)置為 false。
scriptCharset
類型:String
只有當(dāng)請求時 dataType 為 "jsonp" 或 "script",并且 type 是 "GET" 才會用于強制修改 charset。通常只在本地和遠(yuǎn)程的內(nèi)容編碼不同時使用。
success
類型:Function
請求成功后的回調(diào)函數(shù)。
參數(shù):由服務(wù)器返回,并根據(jù) dataType 參數(shù)進(jìn)行處理后的數(shù)據(jù);描述狀態(tài)的字符串。
這是一個 Ajax 事件。
traditional
類型:Boolean
如果你想要用傳統(tǒng)的方式來序列化數(shù)據(jù),那么就設(shè)置為 true。請參考工具分類下面的 jQuery.param 方法。
timeout
類型:Number
設(shè)置請求超時時間(毫秒)。此設(shè)置將覆蓋全局設(shè)置。
type
類型:String
默認(rèn)值: "GET")。請求方式 ("POST" 或 "GET"), 默認(rèn)為 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。
url
類型:String
默認(rèn)值: 當(dāng)前頁地址。發(fā)送請求的地址。
username
類型:String
用于響應(yīng) HTTP 訪問認(rèn)證請求的用戶名。
xhr
類型:Function
需要返回一個 XMLHttpRequest 對象。默認(rèn)在 IE 下是 ActiveXObject 而其他情況下是 XMLHttpRequest 。用于重寫或者提供一個增強的 XMLHttpRequest 對象。這個參數(shù)在 jQuery 1.3 以前不可用。
回調(diào)函數(shù)
如果要處理 $.ajax() 得到的數(shù)據(jù),則需要使用回調(diào)函數(shù):beforeSend、error、dataFilter、success、complete。
beforeSend
在發(fā)送請求之前調(diào)用,并且傳入一個 XMLHttpRequest 作為參數(shù)。
error
在請求出錯時調(diào)用。傳入 XMLHttpRequest 對象,描述錯誤類型的字符串以及一個異常對象(如果有的話)
dataFilter
在請求成功之后調(diào)用。傳入返回的數(shù)據(jù)以及 "dataType" 參數(shù)的值。并且必須返回新的數(shù)據(jù)(可能是處理過的)傳遞給 success 回調(diào)函數(shù)。
success
當(dāng)請求之后調(diào)用。傳入返回后的數(shù)據(jù),以及包含成功代碼的字符串。
complete
當(dāng)請求完成之后調(diào)用這個函數(shù),無論成功或失敗。傳入 XMLHttpRequest 對象,以及一個包含成功或錯誤代碼的字符串。
你好,jquery中ajax默認(rèn)是異步,即async=true。如果要轉(zhuǎn)變成同步,則async=false即可。具體如下操作:
jQuery.ajax({
type:?"post",
url:?url,
cache:?false,
async:?false,
contenttype:?"text/html;charset=gbk",
success:?function(data){
if(data=='1'){
same=true;
}
}
});
如果滿意,望采納,謝謝!
第一步:引用js
!--這里的min是自己用js壓縮工具對完整版進(jìn)行的壓縮
并不是真正的min,所以好使--
script?type="text/javascript"?src="js/jquery-1.7.min.js"/script
script?type="text/javascript"?src="js/jquery.form.js"/script
第二步:頁面寫form
form?id="showDataForm"?
action="/024pm/f_shopUser.do?method=login"?method="post"
input?type="text"?value=""?name="name"?maxlength="2"/
input?type="password"?value=""?name="password"?maxlength="2"/
input?type="submit"?value="提交"/
/form
div?id="output1"?
style="width:1000px;height:200px;"
/div
第三步:寫js調(diào)用jquery.form.js,對form表單進(jìn)行ajax提交
$(document).ready(function()?{
var?options?=?{
target:?'#output1',
//?從服務(wù)傳過來的數(shù)據(jù)顯示在這個div內(nèi)部
也就是ajax局部刷新
beforeSubmit:?showRequest,
//?ajax提交之前的處理
success:??showResponse
//?處理之后的處理
};
$('#showDataForm').submit(function()?{
$(this).ajaxSubmit(options);
return?false;?
//非常重要,如果是false,則表明是不跳轉(zhuǎn)
//在本頁上處理,也就是ajax,如果是非false,則傳統(tǒng)的form跳轉(zhuǎn)。
});
});
function?showResponse(responseText,?statusText,?xhr,?$form)?{
alert(xhr.responseText+"=="+$form.attr("method")+'status:?'?+?
statusText?+?'\n\nresponseText:?\n'?+?responseText);
//xhr:說明你可以用ajax來自己再次發(fā)出請求
//$form:是那個form對象,是一個jquery對象
//statusText:狀態(tài),成功則為success
//responseText,服務(wù)器返回的是字符串(當(dāng)然包括html,不包括json)
}
function?showRequest(formData,?jqForm,?options)?{
//formData是數(shù)組,就是各個input的鍵值map數(shù)組
//通過這個方法來進(jìn)行處理出來拼湊出來字符串。
//formData:拼湊出來的form字符串,比如name=herapassword,
//其實就是各個表單中的input的鍵值對,
//如果加上method=XXXX,那也就是相當(dāng)于ajax內(nèi)的data。
var?queryString?=?$.param(formData);
alert(queryString+"======"+formData.length);
for?(var?i=0;?i??formData.length;?i++)?{
alert(formData[i].value+"==============="+formData[i].name);
}
//jqForm,jquery?form對象
var?formElement?=?jqForm[0];
alert($(formElement).attr("method"));
alert($(jqForm[0].name).attr("maxlength"));
//非常重要,返回true則說明在提交ajax之前你驗證
//成功,則提交ajax?form
//如果驗證不成功,則返回非true,不提交
return?true;
}
options對象內(nèi)的值有哪些?
var?options?=?{
target:?'#output1',?
data:{param1:"我自己的第一個額外的參數(shù)"},
//這個參數(shù)是指通過ajax來給服務(wù)器提交除了form內(nèi)部input的參數(shù)
//在后臺中使用String?param1=req.getParameter("param1");獲取。
//?dataType:?null,
dataType:'json',
//這個參數(shù)值的是服務(wù)器返回的數(shù)據(jù)類型,默認(rèn)的是null
//也就是服務(wù)器可以默認(rèn)返回字符串,然后將這些字符串放在target內(nèi)部
//當(dāng)然還有json、xml,其中最常用的便是null和json
//對于span?style="color:?#333333;"a?href=""?target="_blank"span?style="color:?#333333;"json/span/a/span的使用,我們會稍后講解到
beforeSubmit:?showRequest,
success:??successRes,
type:'POST'
//提交方式,默認(rèn)是自己在form標(biāo)簽上指定的method
//如果沒有指定,則使用get。
url:''
//重新提交的url,即url可以在form中配置
//也可以在這里配置。
};