springmvc與ajax互動常見問題

來源:互聯網
上載者:User

標籤:enc   converter   pre   url   導致   有助於   turn   常見問題   記錄   

這是我個人再編寫部落格系統的時候,因個人疏忽犯下的低級錯誤。

不過犯錯是一件好事,有助於總結。

1.關於參數前加@RequestBody

如果是使用ajax互動時,必須要加上這個contentType: ‘application/json;charset=utf-8‘

否則會出現這個異常:


錯誤資訊:org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

 

不支援這種類型傳遞,是因為沒有在前台進行定義,說明傳遞的內容必須為json。有些時候特別後台以@RequestBody作為傳參時,必須在ajax中加上contentType: ‘application/json;charset=utf-8‘,加上這個意味著你已經將傳遞的對象定義為json類型,@RequestBody也僅僅支援json類型。所以就很容易理解這個錯誤的發生原因。特別是我們開發人員大軍們,其中不乏有這樣的人,對於從來沒遇到的錯誤,複製粘貼到百度去搜尋,通常前人們遇到過,通過部落格的形式記錄下來錯誤資訊及其如何解決,及其為什麼會發生。但是我們有些朋友只看如何解決,至於為什麼會發生從來就不管。

 

錯誤資訊:org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token ‘email‘: was expecting (‘true‘, ‘false‘ or ‘null‘); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token ‘email‘: was expecting (‘true‘, ‘false‘ or ‘null‘)

這個錯誤是因為你定義的json對象參數沒有寫全導致,同時導致這種錯誤還有就是對於後台以@RequestBody接收參數,必須在ajax中的data對應值中寫上JSON.stringify

樣本:

這樣寫就是對的,就不會發生上述的錯誤

$.ajax({                url:"/blog-web/user/register",                type:"POST",                contentType: ‘application/json;charset=utf-8‘,                data : JSON.stringify(data),                dataType : ‘json‘,                success:function(data){                                    if(data.returnCode=="333333"){                    layui.use(‘layer‘, function(){                        var layer = layui.layer;                                                layer.alert(data.returnMsg, {icon: 5});                  });                                      }else if(data.returnCode=="222222"){                                    layui.use(‘layer‘, function(){                          var layer = layui.layer;                                                    layer.alert(data.returnMsg, {icon: 5});                    });                                               }else if(data.returnCode=="111111"){                    layui.use(‘layer‘, function(){                        var layer = layui.layer;                                                layer.alert(data.returnMsg, {icon: 5});                  });                  }else if(data.returnCode=="000000"){                                      layui.use(‘layer‘, function(){                           var layer = layui.layer;                                                      layer.alert("請稍後,馬上進入"+data.returnMsg,{icon: 1});                                              });                      setTimeout(() => {                        view();                    }, 10000);                                    }                        },error:function(){                    layui.use(‘layer‘, function(){                        var layer = layui.layer;                                                layer.alert("有異常,請和管理員聯絡");                                          });                  }            });

 

springmvc與ajax互動常見問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.