1. 程式人生 > >ajax post 請求415\ 400 錯誤

ajax post 請求415\ 400 錯誤

前後臺通過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!成功!!!