運用ajax()方法,比其它如load()、get()、post()全局性函數(shù)它更多地關(guān)注實現(xiàn)過程中的細(xì)節(jié);首先要了解其參數(shù)列表:
網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁制作,對石涼亭等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計,網(wǎng)站優(yōu)化推廣哪家好,專業(yè)網(wǎng)站推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。
url: 要求為String類型的參數(shù),(默認(rèn)為當(dāng)前頁地址)發(fā)送請求的地址。
type:要求為String類型的參數(shù),請求方式(post或get)默認(rèn)為get。注意其他http請求方法,例如put和delete也可以使用,但僅部分瀏覽器支持。
timeout: 要求為Number類型的參數(shù),設(shè)置請求超時時間(毫秒)。此設(shè)置將覆蓋$.ajaxSetup()方法的全局設(shè)置。
async:要求為Boolean類型的參數(shù),默認(rèn)設(shè)置為true,所有請求均為異步請求。如果需要發(fā)送同步請求,請將此選項設(shè)置為false。注意,同步請求將鎖住瀏覽器,用戶其他操作必須等待請求完成才可以執(zhí)行。
cache:要求為Boolean類型的參數(shù),默認(rèn)為true(當(dāng)dataType為script時,默認(rèn)為false)。設(shè)置為false將不會從瀏覽器緩存中加載請求信息。
data: 要求為Object或String類型的參數(shù),發(fā)送到服務(wù)器的數(shù)據(jù)。如果已經(jīng)不是字符串,將自動轉(zhuǎn)換為字符串格式。get請求中將附加在url后。防止這種自動轉(zhuǎn)換,可以查看processData選項。對象必須為key/value格式,例如{foo1:"bar1",foo2:"bar2"}轉(zhuǎn)換為foo1=bar1foo2=bar2。如果是數(shù)組,JQuery將自動為不同值對應(yīng)同一個名稱。例如{foo:["bar1","bar2"]}轉(zhuǎn)換為foo=bar1foo=bar2。
dataType: 要求為String類型的參數(shù),預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,JQuery將自動根據(jù)http包mime信息返回responseXML或responseText,并作為回調(diào)函數(shù)參數(shù)傳遞??捎玫念愋腿缦拢?/p>
xml:返回XML文檔,可用JQuery處理。
html:返回純文本HTML信息;包含的script標(biāo)簽會在插入DOM時執(zhí)行。
script:返回純文本JavaScript代碼。不會自動緩存結(jié)果。除非設(shè)置了cache參數(shù)。注意在遠(yuǎn)程請求時(不在同一個域下),所有post請求都將轉(zhuǎn)為get請求。
json:返回JSON數(shù)據(jù)。
jsonp:JSONP格式。使用SONP形式調(diào)用函數(shù)時,例如myurl?callback=?,JQuery將自動替換后一個 “?”為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
text:返回純文本字符串。
beforeSend:要求為Function類型的參數(shù),發(fā)送請求前可以修改XMLHttpRequest對象的函數(shù),例如添加自定義HTTP頭。在beforeSend中如果返回false可以取消本次ajax請求XMLHttpRequest對象是惟一的參數(shù)。
function(XMLHttpRequest){
this; //調(diào)用本次ajax請求時傳遞的options參數(shù)
}
complete:要求為Function類型的參數(shù),請求完成后調(diào)用的回調(diào)函數(shù)(請求成功或失敗時均調(diào)用)。參數(shù):XMLHttpRequest對象和一個描述成功請求類型的字符串。
function(XMLHttpRequest, textStatus){
this; //調(diào)用本次ajax請求時傳遞的options參數(shù)
}
success:要求為Function類型的參數(shù),請求成功后調(diào)用的回調(diào)函數(shù),有兩個參數(shù)。
(1)由服務(wù)器返回,并根據(jù)dataType參數(shù)進(jìn)行處理后的數(shù)據(jù)。
(2)描述狀態(tài)的字符串。
function(data, textStatus){
//data可能是xmlDoc、jsonObj、html、text等等
this; //調(diào)用本次ajax請求時傳遞的options參數(shù)
error:要求為Function類型的參數(shù),請求失敗時被調(diào)用的函數(shù)。該函數(shù)有3個參數(shù),即XMLHttpRequest對象、錯誤信息、捕獲的錯誤對象(可選)。
ajax事件函數(shù)如下:
function(XMLHttpRequest, textStatus, errorThrown){
//通常情況下textStatus和errorThrown只有其中一個包含信息
this; //調(diào)用本次ajax請求時傳遞的options參數(shù)
}
contentType:要求為String類型的參數(shù),當(dāng)發(fā)送信息至服務(wù)器時,內(nèi)容編碼類型默認(rèn)為"application/x-www-form-urlencoded"。該默認(rèn)值適合大多數(shù)應(yīng)用場合。
dataFilter:要求為Function類型的參數(shù),給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)一步處理。
function(data, type){
//返回處理后的數(shù)據(jù)
return data;
}
global:要求為Boolean類型的參數(shù),默認(rèn)為true。表示是否觸發(fā)全局ajax事件。設(shè)置為false將不會觸發(fā)全局ajax事件,ajaxStart或ajaxStop可用于控制各種ajax事件。
ifModified:要求為Boolean類型的參數(shù),默認(rèn)為false。僅在服務(wù)器數(shù)據(jù)改變時獲取新數(shù)據(jù)。服務(wù)器數(shù)據(jù)改變判斷的依據(jù)是Last-Modified頭信息。默認(rèn)值是false,即忽略頭信息。
jsonp:要求為String類型的參數(shù),在一個jsonp請求中重寫回調(diào)函數(shù)的名字。該值用來替代在"callback=?"這種GET或POST請求中URL參數(shù)里的"callback"部分,例如{jsonp:'onJsonPLoad'}會導(dǎo)致將"onJsonPLoad=?"傳給服務(wù)器。
username:要求為String類型的參數(shù),用于響應(yīng)HTTP訪問認(rèn)證請求的用戶名。
password:要求為String類型的參數(shù),用于響應(yīng)HTTP訪問認(rèn)證請求的密碼。
processData:要求為Boolean類型的參數(shù),默認(rèn)為true。默認(rèn)情況下,發(fā)送的數(shù)據(jù)將被轉(zhuǎn)換為對象(從技術(shù)角度來講并非字符串)以配合默認(rèn)內(nèi)容類型"application/x-www-formurlencoded"。如果要發(fā)送DOM樹信息或者其他不希望轉(zhuǎn)換的信息,請設(shè)置為false。
scriptCharset:要求為String類型的參數(shù),只有當(dāng)請求時dataType為"jsonp"或者"script",并且type是GET時才會用于強制修改字符集(charset)。通常在本地和遠(yuǎn)程的內(nèi)容編碼不同時使用。
第一種:
$.ajax({
type:?"POST",?//提交方式?post?和?get
url:?"連接地址",//連接地址
data:?'{"'?+?+?'"}',//數(shù)據(jù)類型
contentType:?"application/json;charset=utf-8",//編碼形式
dataType:?"json",?//提交數(shù)據(jù)類型
success:?function?(data)?{
var?it?=?eval(data.d);
var?Html?=?"";
for?(var?i?in?it)?{}
},?async:?false
});
第二種:
$(document).ready(function(){
$("#a").click(function(){
htmlobj=$.ajax({url:"/test.txt",async:false});
$("#b").html(htmlobj.responseText);
});
});
第三種:
$.ajax({?url:?"abc.html",?context:?document.body,?success:?function(){
$(this).addClass("Dmoe");
}});
//參考文獻(xiàn):鋒利的Jquery??如有疏漏或者錯誤?還望大家指出
Java軟件開發(fā)中,后臺中我們可以通過各種框架,像SSH等進(jìn)行對代碼的封裝,方便我們對Java代碼的編寫,例如,Struts,SpringMVC對從前臺到action的流程進(jìn)行封裝控制,使我們只需要進(jìn)行一些簡單配置就可以實現(xiàn);而Spring進(jìn)行了對各種對象的管理進(jìn)行封裝,提供了AOP編程的方式,大大方便了我們;而Hibernate和IBatis則是對JDBC代碼進(jìn)行封裝,不需要我們每次都寫那些重復(fù)而繁雜的JDBC代碼。
前臺呢,對于頁面一些效果,驗證等,我們都是通過JavaScript語言進(jìn)行完成的,但是它也就像我們的Java代碼一樣,是最前臺語言最基礎(chǔ)的,而JQuery則是對js代碼進(jìn)行封裝方便我們前臺代碼的編寫,而且它還有一個非常大的優(yōu)勢就是解決了瀏覽器的兼容問題,這也是我們使用它非常重要的原因之一。
而現(xiàn)在為了滿足用戶的需求,Ajax(Asynchronous Javascript + XML)異步刷新起到了無可比擬的作用,以前寫Ajax操作,總是需要我們想JDBC代碼一樣進(jìn)行幾個必備的步驟:
AJAX——核心XMLHttpRequest對象,而JQuery也對Ajax異步操作進(jìn)行了封裝,這里看一下幾種常用的方式。 $.ajax,$.post, $.get, $.getJSON。
一, $.ajax,這個是JQuery對ajax封裝的最基礎(chǔ)步,通過使用這個函數(shù)可以完成異步通訊的所有功能。也就是說什么情況下我們都可以通過此方法進(jìn)行異步刷新的操作。但是它的參數(shù)較多,有的時候可能會麻煩一些??匆幌鲁S玫膮?shù):
var configObj = {
method //數(shù)據(jù)的提交方式:get和post
url //數(shù)據(jù)的提交路勁
async //是否支持異步刷新,默認(rèn)是true
data //需要提交的數(shù)據(jù)
dataType //服務(wù)器返回數(shù)據(jù)的類型,例如xml,String,Json等
success //請求成功后的回調(diào)函數(shù)
error //請求失敗后的回調(diào)函數(shù)
}
$.ajax(configObj);//通過$.ajax函數(shù)進(jìn)行調(diào)用。
二,$.post,這個函數(shù)其實就是對$.ajax進(jìn)行了更進(jìn)一步的封裝,減少了參數(shù),簡化了操作,但是運用的范圍更小了。$.post簡化了數(shù)據(jù)提交方式,只能采用POST方式提交。只能是異步訪問服務(wù)器,不能同步訪問,不能進(jìn)行錯誤處理。在滿足這些情況下,我們可以使用這個函數(shù)來方便我們的編程,它的主要幾個參數(shù),像method,async等進(jìn)行了默認(rèn)設(shè)置,我們不可以改變的。例子不再介紹。
url:發(fā)送請求地址。
data:待發(fā)送 Key/value 參數(shù)。
callback:發(fā)送成功時回調(diào)函數(shù)。
type:返回內(nèi)容格式,xml, html, script, json, text,_default。
三,$.get,和$.post一樣,這個函數(shù)是對get方法的提交數(shù)據(jù)進(jìn)行封裝,只能使用在get提交數(shù)據(jù)解決異步刷新的方式上,使用方式和上邊的也差不多。這里不再演示。
四, $.getJSON,這個是進(jìn)一步的封裝,也就是對返回數(shù)據(jù)類型為Json進(jìn)行操作。里邊就三個參數(shù),需要我們設(shè)置,非常簡單:url,[data],[callback]。
其實會了$.ajax方法,其它的就都會使用了,都是一樣的,其實非常簡單。
但是這里還有一個問題,比較麻煩,就是如果頁面數(shù)據(jù)量比較大,該怎么辦呢?在常規(guī)表單的處理中,我們使用框架Struts2可以通過域驅(qū)動模式進(jìn)行自動獲取封裝,那么通過ajax,如何進(jìn)行封裝呢?這里JQuery有一個插件,Jquery Form,通過引入此js文件,我們可以模仿表單Form來支持Struts2的域驅(qū)動模式,進(jìn)行自動數(shù)據(jù)的封裝。
這樣我們就不用再進(jìn)行數(shù)據(jù)data的封裝處理,大大簡化了我們ajax的操作這樣異步刷新的操作。綜上為JQuery中ajax的操作,感覺使用多了,和form表單的處理還是非常相似的,只不過實現(xiàn)的功能不一樣罷了。學(xué)習(xí)編程,其實就是學(xué)習(xí)對數(shù)據(jù)的流轉(zhuǎn)處理,如何從前臺獲取,傳輸?shù)椒?wù)器進(jìn)行相應(yīng)的處理,然后返回,進(jìn)行相關(guān)的顯示,把這個流程通過一些技術(shù)實現(xiàn),就完成了軟件的開發(fā),感覺還是非常有意思的。
更多資料請參考