關於ajax不同方式的傳值類型及接受方式

關於ajax不同方式的傳值類型及接收方式

1.傳值

先看看ajax的基本格式

$.ajax({
    url: "",
    type:"",
    dataType"",
    contentType:"",
    data: ,
    success:function(res){
    
	}
})
  • url:傳值的地址

  • type:傳值類型 GET/POST

  • dataType:指定以什麼方式來處理接受到的數據;json/text

  • data:請求的數據

  • contentType:請求發送至服務器時的data編碼類型 ;application/json / application/x-www-form-urlencoded

dataType:

  1. dataType:“text” :此時res就是後臺返回JSON字符串類型。{“success”:true,“msg”:“查詢成功!”}
  2. dataType : “json” 此時會把後臺返回的字符串類型解析爲json對象,類型於這樣。

contentType:

ContentType是指http/https發送信息至服務器時的內容編碼類型,contentType用於表明發送數據流的類型,服務器根據編碼類型使用特定的解析方式,獲取數據流中的數據。

  1. 如果不指定contentType,則請求數據類型爲json字符串格式和JSON對象都可以。默認爲 application/x-www-form-urlencoded。故一般不指定ContentType
var id ="1";
//方式1:POST
    type: "POST",
    data:{"cameraId":id}//可以
    data:"cameraId="+id//可以
    data:JSON.stringify({"cameraId":id})//可以傳但是後臺只能通過@RequestBody獲取數據,其他方式獲取不到

//方式2:GET
	data:{"cameraId":id}//可以
    data:"cameraId="+id//可以
	data:JSON.stringify({"cameraId":id})//400錯誤 url?{%22cameraId%22:%221%22}後面無法正確解析參數

​ 2.如果指定了contebtType=“application/json”,data只能傳遞json字符串否則報400錯誤。

type: "POST",
contentType: "application/json",
data: JSON.stringify({"cameraId": id}), 
/*這種方式可以傳遞成功但是後臺接受的時候只能使用@RequestBody PresetInfo PresetInfo 來接收
否則接收不到數據(cameraId是PresetInfo實體類的屬性)
*/

如果非得指定contebtType=“application/json”,且傳遞方式是POST,可以這樣設置data格式

data:"cameraId="+id
/*後臺接受可以用@RequestParam("cameraId")/String cameraId/PresetInfo presetInfo都可以*/

2.接收

一般接收有以下幾種方式(SSM)

  1. 基本類型+String
  2. 實體類
  3. @RequestParam
  4. @RequestBody

對於@ResquestParam和@RequestBody標籤的區別:

@ResquestParam:用來處理Content-Type: 爲 application/x-www-form-urlencoded編碼的內容。(Http協議中,如果不指定Content-Type,則默認傳遞的參數就是application/x-www-form-urlencoded類型)

@RequestBody:處理HttpEntity傳遞過來的數據,一般用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數據。例如:ajax請求是指定contebtType=“application/json”。

3.總結

下面列舉了能正確接收數據的方式

方式\data JSON對象{cameraId:id} 字符串"cameraId="+id 字符串JSON.stringify({cameraId:id})
POST 實體類、基本類型+String、@RequestParam 實體類、基本類型+String、@RequestParam @RequestBody
GET 實體類、基本類型+String、@RequestParam 實體類、基本類型+String、@RequestParam 400錯誤

一般報400原因就是data數據和contentType不對應。

一般報415原因後臺處理請求的方式和請求數據的類型不匹配,也就是說@ResquestParam和@RequestBod標籤用錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章