ajax post 請求415\ 400 錯誤
阿新 • • 發佈:2018-12-19
前後臺通過ajax進行資料互動的時候出現了異常報錯415, 請求方式如下:
// 錯誤1... $.ajax({ url: url + '/license/generate', type: 'post', data: { regCode: '1a57-211a-cb2f-f496-0892-6cc4-8d6f-496e-9cc4-3ae7-64f7-d1ea-2770-bbc5-16', regPer: $('#regPer').val(), exporeTime: $('#exporeTime').val(), salePer: $('#salePer').val(), agentPer: $('#agentPer').val(), maxOrgNum: $('#maxOrgNum').val(), implPer: $('#implPer').val(), memo: $('#memo').val() }, dataType: 'json', success: function (res) { console.log(res) } })
檢視控制檯 返回 錯誤415(不支援的媒體型別)
error: "Unsupported Media Type"
exception: "org.springframework.web.HttpMediaTypeNotSupportedException"
message: "Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported"
path: "/license/generate"
status: 415
timestamp: 1541405303823
經過同事提醒,此處post提交時header中的contentType型別異常
application/x-www-form-urlencoded 最常見的 POST 提交資料的方式 multipart/form-data 使用表單上傳檔案時,傳遞這個值 application/json 用來告訴服務端訊息主體是序列化後的 JSON 字串 text/xml 使用 HTTP 作為傳輸協議,XML 作為編碼方式的遠端呼叫規範 內容參考: 四種常見的 POST 提交資料方式對應的content-type取值 菜鳥驛站HTTP content-type 對照表
初次修改後進行提交
// 錯誤2.... $.ajax({ url: url + '/license/generate', type: 'post', data: { regCode: '1a57-211a-cb2f-f496-0892-6cc4-8d6f-496e-9cc4-3ae7-64f7-d1ea-2770-bbc5-16', regPer: $('#regPer').val(), exporeTime: $('#exporeTime').val(), salePer: $('#salePer').val(), agentPer: $('#agentPer').val(), maxOrgNum: $('#maxOrgNum').val(), implPer: $('#implPer').val(), memo: $('#memo').val() }, dataType: 'json', contentType: 'application/json; charset=UTF-8',// contn success: function (res) { console.log(res) } })
!!!400 無效請求 前後臺傳入的資料不匹配,後臺無法解析資料,進行查詢。emmmm…經過一番百度,提到對請求資料進行json 序列
$.ajax({
url: url + '/license/generate',
type: 'post',
// JSON.stringify解決404錯誤請求
data: JSON.stringify({
regCode: '1a57-211a-cb2f-f496-0892-6cc4-8d6f-496e-9cc4-3ae7-64f7-d1ea-2770-bbc5-16',
regPer: $('#regPer').val(),
exporeTime: $('#exporeTime').val(),
salePer: $('#salePer').val(),
agentPer: $('#agentPer').val(),
maxOrgNum: $('#maxOrgNum').val(),
implPer: $('#implPer').val(),
memo: $('#memo').val()
}),
dataType: 'json',
contentType: 'application/json; charset=UTF-8',// 解決415錯誤
success: function (res) {
$('.regcodearea').show().siblings().hide();
$('#copyText').val(res.data);
}
})
perfect!成功!!!