$.ajax(),$.get(),$.post()的區別,以及一些引數注意規則

Fannn發表於2018-07-03

$.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
})

 

參考資料:

AJAX get() 和 post() 方法

jQuery AJAX 方法

$.ajax()方法詳解

 

相關文章