$.ajax是jQuery提供的一個(gè)函數(shù),用于向服務(wù)器發(fā)送異步請(qǐng)求。其中的done和success是常用的兩個(gè)回調(diào)函數(shù),用于處理請(qǐng)求成功后的操作。本文將詳細(xì)介紹這兩個(gè)函數(shù)的用法,并通過舉例說明它們的作用和優(yōu)勢(shì)。
首先來看done函數(shù)。done函數(shù)在請(qǐng)求成功時(shí)被調(diào)用,它接收一個(gè)回調(diào)函數(shù)作為參數(shù),用于處理服務(wù)器返回的數(shù)據(jù)。下面是一個(gè)簡(jiǎn)單的例子:
$.ajax({ url: "https://api.example.com/users", method: "GET" }).done(function(data) { console.log(data); });
在這個(gè)例子中,我們向服務(wù)器發(fā)送了一個(gè)GET請(qǐng)求,請(qǐng)求地址是"https://api.example.com/users"。當(dāng)請(qǐng)求成功后,服務(wù)器返回的數(shù)據(jù)將被作為參數(shù)傳遞給done函數(shù)的回調(diào)函數(shù)。在這個(gè)回調(diào)函數(shù)中,我們將返回的數(shù)據(jù)打印到了控制臺(tái)上。
done函數(shù)的優(yōu)勢(shì)在于它支持鏈?zhǔn)秸{(diào)用。這意味著我們可以在一個(gè)請(qǐng)求成功的回調(diào)函數(shù)中再次調(diào)用done函數(shù),來處理進(jìn)一步的邏輯。下面是一個(gè)簡(jiǎn)單的例子:
$.ajax({ url: "https://api.example.com/users", method: "GET" }).done(function(data) { console.log(data); }).done(function(data) { console.log("請(qǐng)求成功!"); });
在這個(gè)例子中,我們?cè)诘谝粋€(gè)done函數(shù)中再次調(diào)用了done函數(shù)。當(dāng)請(qǐng)求成功后,第一個(gè)done函數(shù)會(huì)被調(diào)用,打印返回的數(shù)據(jù)。然后,第二個(gè)done函數(shù)也會(huì)被調(diào)用,打印"請(qǐng)求成功!"。通過鏈?zhǔn)秸{(diào)用,我們可以方便地將多個(gè)操作串起來。
接下來我們來看success函數(shù)。success函數(shù)也是在請(qǐng)求成功時(shí)被調(diào)用,用于處理服務(wù)器返回的數(shù)據(jù)。與done函數(shù)不同的是,它接收三個(gè)參數(shù):返回的數(shù)據(jù)、狀態(tài)碼和響應(yīng)對(duì)象。下面是一個(gè)簡(jiǎn)單的例子:
$.ajax({ url: "https://api.example.com/users", method: "GET", success: function(data, status, xhr) { console.log(data); console.log(status); console.log(xhr); } });
在這個(gè)例子中,我們傳遞了一個(gè)success回調(diào)函數(shù)給$.ajax函數(shù)。當(dāng)請(qǐng)求成功時(shí),該回調(diào)函數(shù)會(huì)被調(diào)用,并將返回的數(shù)據(jù)、狀態(tài)碼和響應(yīng)對(duì)象作為參數(shù)傳遞進(jìn)去。我們?cè)诨卣{(diào)函數(shù)中打印了這三個(gè)參數(shù)。通過success函數(shù),我們可以更加靈活地處理服務(wù)器返回的數(shù)據(jù)。
總結(jié)來說,$.ajax的done函數(shù)和success函數(shù)都是用于處理請(qǐng)求成功后的操作。done函數(shù)更加簡(jiǎn)潔,支持鏈?zhǔn)秸{(diào)用;而success函數(shù)更加靈活,可以訪問更多的參數(shù)。根據(jù)具體的需求,我們可以選擇使用其中的一個(gè)或者兩個(gè)都使用。無論是done函數(shù)還是success函數(shù),它們都為我們處理請(qǐng)求成功后的邏輯提供了便利。