Ajax向cntroller傳值,傳值方式以及資料型別的對照
阿新 • • 發佈:2018-12-17
- ajax向controller傳值
//向後臺傳送處理資料
//contentType: 告訴伺服器,我要發什麼型別的資料
// dataType:告訴伺服器,我要想什麼型別的資料,如果沒有指定,那麼會自動推斷是返回 XML,還是JSON,還是script,還是String。
- 常見contentType
- 常見的媒體格式型別如下:
text/html : HTML格式
text/plain :純文字格式
text/xml : XML格式
image/gif :gif圖片格式
image/jpeg :jpg圖片格式
image/png:png圖片格式
以application開頭的媒體格式型別:
application/ xhtml+xml :XHTML格式
application/xml : XML資料格式
application/atom+xml :Atom XML聚合格式
application/json : JSON資料格式
application/pdf :pdf格式
application/msword : Word文件格式
application/octet-stream : 二進位制流資料(如常見的檔案下載)
application/x-www-form-urlencoded : <form encType=””> 中預設的encType,form表單資料被編碼為key/value格式傳送到伺服器(表單預設的提交資料的格式)
另外一種常見的媒體格式是上傳檔案之時使用的:
multipart/form-data : 需要在表單中進行檔案上傳時,就需要使用該格式
- ajax提交
$.ajax({
type: "POST", //用POST方式傳輸
dataType: "Json", //伺服器返回的資料型別 可選XML ,Json jsonp script html text等
contentType:"application/x-www-form-urlencoded;charset=UTF-8" ,//預設值可根據controller map 的consumes的要求設定
url: 'http://localhost:8080/user/sendCode', //目標地址
data:{mail:email} ,//可以是"mail="+email 或者 {"mail":email}
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("錯誤!"+XMLHttpRequest+textStatus+errorThrown);
},
success: function (msg){
console.log(msg);
alert(msg);
}
});
@RequestMapping( value = "/sendCode")
@ResponseBody//指定返回資料為json,不指定的話請求包含dataType為json的請求不能獲得資料
public Info sendCode(@RequestParam String mail, HttpSession session) {
//程式碼
}
- controller獲取資料
當請求contentType為application/json時引數用@RequsetBody註解,引數是json時可以直接用實體類接收引數,以下程式碼ActiveCodeBody 為實體類,注意實體類一定要包含預設無參建構函式
//consumes: 指定處理請求的提交內容型別(Content-Type),例如application/json, text/html;
//produces: 指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回
@PostMapping(value = "/postGetCode",produces= "application/json;charset=UTF-8",consumes = "application/json")
@ResponseBody
public Info verifyEmail(@RequestBody ActiveCodeBody body){
//程式碼
}
為application/x-www-form-urlencoded時用@RequestParam