ajax有三種傳遞傳遞data的方式:
1、json格式 2、標准參數模式 3、json字符串格式
1.json對象格式:
{“username”:”chen”,”nickname”:”alien”}
$.ajax({ type:"post", url:"/test/saveUser", data:{"username":"chen","nickname":"alien"}, dataType:"json", //指定響應的data數據類型為JSON對象。 success: function(data){ console.log(data); } });
如:當前的Ajax請求是一個POST請求,對請求體中的數據 使用默認的數據編碼,格式如:key1 = value2&key2 = value2 a中的數據變成這樣的格式:key1 = value2&key2 = value2 ,包裝在Http請求體中傳送給后台。
dataType:"json"
dataType:“json” :用來指定服務器返回的data數據類型必須是JSON類型。然后jQuery就會把后端返回的json字符串嘗試通過JSON.parse()解析為js對象。
如果不指定dataType,jQuery 將自動根據 HTTP 包的 MIME 信息來智能判斷,若MIME信息的值為JSON,則jQuery會自動的把data數據轉換成JS對象的json,
接着Script把data傳遞給回調函數進行JS的腳本操作。
2、標准參數模式
形如:
“username=Liudehua & age=50”
$.ajax({ type:"post", url:"/test/saveUser", data:"username=chen&nickname=alien", dataType:"json", success: function(data){ console.log(data); } });
$(“#form1”).serialize() 就是把表單的數據拼成這個格式(key1 = value2&key2 = value2)的字符串,然后放在Http請求體中傳給后台!
3.json字符串 ————>只用於post請求
形如:
“{“username”:”chen”,”nickname”:”alien”}”————>JSON對象格式的字符串
或者JSON.stringify({“username”:”chen”,”nickname”:”alien”})————>把JSON對象轉成JSON格式的字符串。
$.ajax({ type:"post", url:"/test/saveUser", data:JSON.stringify({"username":"chen","nickname":"alien"}), contentType:"json/application" dataType:"json", success: function(data){ console.log(data); } });
**這種方式不能用於 Get請求。
原因:
1、因為此種方式發送的請求,后端必須得用@RequestBody進行接收,且接收的是Http請求體中的數據,Get請求沒有請求體。
2、而且此方式的Ajax 必須要添加 contentType:”json/application”這個字段信息。
注意:
1、
若為GET請求,則會把data的數據 附加在 URL 后,
格式如:localhost://findAll ? key1=value1&key2=value2
若為POST請求,則就會把data的數據 放在請求體中。
格式如:key1 = value2&key2 = value2
2、dataType:指定服務器端返回的數據類型。
若不指定,且后端返回的是Json,前端就會自動識別返回的數據是JSON。
