jquery ajax 回調(diào)函數(shù)使用挺簡單的,只要配置正確就可以使用。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了碭山免費(fèi)建站歡迎大家使用!
$.ajax({?url:?"test.html",?context:?document.body,?success:?function(){
alert("回調(diào)函數(shù)")
}});
使用代碼如上,JQUERY通信組件這塊封裝的比較好,使用很方便。還可以配置異步或同步。
再補(bǔ)充一點(diǎn),一般在回調(diào)函數(shù)里給個操作的提示信息,然后再進(jìn)行相關(guān)的更新操作
?因為javascript的運(yùn)行機(jī)制的原因,jquery作為成熟的工具,為javascript提供了大量的回調(diào)函數(shù)(callback)。
?因為回調(diào)函數(shù)的工作原理以及工作時機(jī),很多新手對回調(diào)函數(shù)不能熟練運(yùn)用。回調(diào)函數(shù)的重要作用之一,就是在某項操作完成時,進(jìn)行下一項操作。這兩項操作功能上不一定耦合,但是邏輯上卻必須耦合。意思是前一個操作實(shí)現(xiàn)的功能(效果)可以和回調(diào)函數(shù)實(shí)現(xiàn)的功能毫無聯(lián)系,但是二者在代碼邏輯上卻是耦合的。耦合的意思是說,當(dāng)一操作進(jìn)行后,二操作會緊跟進(jìn)行,二者的運(yùn)行關(guān)系密不可分?;卣{(diào)函數(shù)增加了程序的耦合性,使代碼的邏輯更容易理解。
?回調(diào)函數(shù)的用處在javascript中可謂處處體現(xiàn),比如最為重要的就是AJAX回調(diào)。
?Jquery中提供了大量大回調(diào)函數(shù),比如complete,success,fail等操作。這些操作的調(diào)用時機(jī)就如同他們的名字一樣。success以為著成功的時候調(diào)用,等。
舉個簡單的例子,以jquery中的動畫為例,現(xiàn)在我想實(shí)現(xiàn)一個讓id為animate的dom對象寬度邊長的動畫,在這個對象變長之后,我想要提示用戶,這個對象已經(jīng)變長了。因此,我得使用以下的代碼:
$("#animate").animate({
width:?200
},?{
duration:?500,
success:?function()?{
alert("width?已經(jīng)變長了");
},
error:?function()?{
alert("出現(xiàn)了錯誤");
}
});
以上的代碼定義了兩個回調(diào)函數(shù)success和error,顧名思義,success是在成功的時候就會調(diào)用,error是在出錯誤之后調(diào)用。
這就是回調(diào)函數(shù)的基本運(yùn)用。
看到這兒,或許你會問,為什么我不直接用這樣的代碼呢?
try?{
$("#animate").animate({
width:?2000
},?500,?"linear");
alert(""width已經(jīng)變長了);
}?catch(error)?{
alert("出錯了");
}
如果你測試你會發(fā)現(xiàn),動畫并未完成,就出現(xiàn)了alert彈窗。
這就是javascript的運(yùn)行機(jī)制所造成的,javascript的運(yùn)行機(jī)制分為同步和異步,異步操作會破壞腳本的執(zhí)行流,使得程序跳過異步(異步仍然在進(jìn)行)而進(jìn)入接下來的程序,異步操作即使在進(jìn)行,也不會影響javascript的繼續(xù)執(zhí)行,也就是不會產(chǎn)生阻塞。同步操作中的定時操作有著與異步很相似的運(yùn)行機(jī)制,但是依然是同步操作。以上的錯誤正是由于定時操作引起的。
回調(diào)函數(shù)的作用,最為重要的運(yùn)用,就是運(yùn)用在異步操作和定時操作。
jquery中運(yùn)用回調(diào)函數(shù)最重要的地方有兩個,一個是動畫回調(diào)(就是在動畫執(zhí)行完成,或者執(zhí)行錯誤,或者執(zhí)行失敗的時候調(diào)用),以及ajax(同動畫)。ajax與回調(diào)是密不可分的。
函數(shù)定義為:jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
其中success為回調(diào)函數(shù),如果將data省略,第二個post參數(shù)即為回調(diào)函數(shù)。
假設(shè)要POST一些數(shù)據(jù)到w.php,成功的話彈出對話框,如下:
$.post("w.php", "data-here" , function(){alert('發(fā)送成功!')});
(如果第二個參數(shù)省略,第三個函數(shù)參數(shù)被提前到第二個的話,程序自動認(rèn)為function()參數(shù)為回調(diào)函數(shù)),也就是說
$.post("w.php", function(){alert('發(fā)送成功')});
表示什么數(shù)據(jù)都不發(fā)送而只是發(fā)生post請求,成功就彈出對話框。
你要知道加上“()”代表執(zhí)行方法,而沒有加上“()”的函數(shù)只是一個變量,不加上括號就是傳遞一個函數(shù)作為回調(diào)函數(shù)。
如果回調(diào)函數(shù)加上小括號,那順序
執(zhí)行回調(diào)函數(shù)
執(zhí)行jQuery函數(shù),而且“JQuery中回調(diào)函數(shù)”,這個“回調(diào)函數(shù)”就要變成
順序一返回的值。
比如: