$.ajax()方法和$.get(),$.post()方法的對比
$.ajax()方法是最完整的寫法,可以完成所有的ajax請求(包含get型別和post型別)
$.get()和$.post()都是簡易版,用來完成單一的簡便的功能,為了使程式碼看起來不那麼繁瑣,簡潔寫法,省去很多不必要的功能
$.get()
用來從目標地址獲取資料,但是無法傳遞引數(現在也可以傳遞資料)
—————————————————————–
語法格式: $.get(URL,callback);
URL 必需的 引數規定您希望請求的 URL。
callback 可選的 引數是請求成功後所執行的函式名。
eg:
$(“button”).click(function(){
$.get(“demo_test.asp”,function(data,status){
alert(“Data: ” + data + ”
Status: ” + status);
});
});
—————————————————————–
最新的語法格式: $.get(URL,data,function(data,status,xhr),dataType)
URL 必需。規定您需要請求的 URL。
data 可選。規定連同請求傳送到伺服器的資料。
function(data,status,xhr) 可選。規定當請求成功時執行的函式。
額外的引數:
data – 包含來自請求的結果資料
status – 包含請求的狀態(”success”、”notmodified”、”error”、”timeout”、”parsererror”)
xhr – 包含 XMLHttpRequest 物件
dataType 可選。規定預期的伺服器響應的資料型別。
預設地,jQuery 會智慧判斷。
可能的型別:
”xml” – 一個 XML 文件
”html” – HTML 作為純文字
”text” – 純文字字串
”script” – 以 JavaScript 執行響應,並以純文字返回
”json” – 以 JSON 執行響應,並以 JavaScript 物件返回
”jsonp” – 使用 JSONP 載入一個 JSON 塊,將新增一個 “?callback=?” 到 URL 來規定回撥
—————————————————————–
$.post()
用來從目標地址獲取資料,可以傳遞引數以此來完成條件過濾
語法格式: $(selector).post(URL,data,function(data,status,xhr),dataType)
URL 必需。規定您需要請求的 URL。
data 可選。規定連同請求傳送到伺服器的資料。
function(data,status,xhr) 可選。規定當請求成功時執行的函式。
額外的引數:
data – 包含來自請求的結果資料
status – 包含請求的狀態(”success”、”notmodified”、”error”、”timeout”、”parsererror”)
xhr – 包含 XMLHttpRequest 物件
dataType 可選。規定預期的伺服器響應的資料型別。
預設地,jQuery 會智慧判斷。
可能的型別:
”xml” – 一個 XML 文件
”html” – HTML 作為純文字
”text” – 純文字字串
”script” – 以 JavaScript 執行響應,並以純文字返回
”json” – 以 JSON 執行響應,並以 JavaScript 物件返回
”jsonp” – 使用 JSONP 載入一個 JSON 塊,將新增一個 “?callback=?” 到 URL 來規定回撥
—————————————————————–
所以,目前來看,$get()和$post()方法能實現的功能完全一樣,又有什麼區別呢?
它們另外的不同之處在於
GET 方法可能返回快取資料。
POST 方法不會快取資料
這是它們之間最大的不同之處
所以可以根據需求來選擇使用$get()或者$post()
詳細說明
$get()或者$post()函式都是簡寫的 Ajax 函式,格式完全一樣,等價於:
$.ajax({
type: `POST/get`,
url: url,
data: data,
success: success,
dataType: dataType
//…
});
—————————————————————–
另外注意:傳遞的data的型別都必須是物件型別(鍵值對的格式:JSON)或者String型別
(要求為Object或String型別的引數,傳送到伺服器的資料。)
如果已經不是字串,將自動轉換為字串格式。
get請求中將附加在url後。防止這種自動轉換,可以檢視 processData選項。
物件必須為key/value格式,例如{foo1:”bar1″,foo2:”bar2″}轉換為&foo1=bar1&foo2=bar2。
如果是陣列,JQuery將自動為不同值對應同一個名稱。
例如{foo:[“bar1″,”bar2”]}轉換為&foo=bar1&foo=bar2。
如果你想傳一個陣列到伺服器,你必須把陣列轉成物件型別,然後伺服器獲取再處理
$.ajax({
type: `POST`,
url: url,
//data: [1,2,3], 這樣賦值會報錯
data: {`arrayobj[]`: [1,2,3,4]} 這樣賦值才行
success: success,
dataType: dataType
})
參考資料: