第一,請求參數與後臺接收參數不一致;java
application/x-www-form-urlencoded:瀏覽器默認請求,數據是jquery的Ajax請求的默認方式,這種方式的好處是瀏覽器都支持,在請求過程當中會對數據進行序列化,以鍵值對的形式k1=v1&k2=v2jquery
application/json:是以json字符串的格式請求ajax
第2、請求參數類型與後臺接收參數類型不一致;spring
application/x-www-form-urlencoded:能夠使用springMVC默認的自定義參數接收,也能夠經過@requestParam()註解接收,或者對象接收json
application/json:只能以@requestBody註解接收對象,可是springMVC中用@requestBody以後就不能接收單個參數了瀏覽器
舉例格式一:前臺用ajax 以application/json格式請求app
1 $(function(){ 2 $("#searchBtn").click(function(){ 3 var data = { 4 keyWord: $('#keyWord').val(), 5 isAvailable: $('#isAvailable').val(), 6 begin: $('#begin').val(), 7 end: $('#end').val() 8 }; 9 console.log(typeof data) 10 console.log(typeof JSON.stringify(data)) 11 $.ajax({ 12 type:'post', 13 url:'http://localhost:8081/admin/ucenter/member/1/3', 14 data:JSON.stringify(data), 15 contentType: 'application/json', //請求的數據類型 16 dataType: 'json', //返回的數據類型 17 success: function(result){ 18 console.log(result) 19 } 20 }) 21 }) 22 })
後臺java接收post
@requestMapping("admin/ucenter/member/{page}/{limit}") public R pageList(@PathVariable Long page, @PathVariable Long limit, @RequestBody(required = false) QueryMember searchObject){ Page<Member> pageParam = new Page<>(page,limit); iMemberService.pageList(pageParam, searchObject); List<Member> records = pageParam.getRecords(); long total = pageParam.getTotal(); return R.ok().data("total",total).data("row",records); }
舉例格式二:前臺用ajax 以application/x-www-form-urlencoded格式請求類型(默認的)ui
<script> $(function(){ $("#searchBtn").click(function(){ var data = { keyWord: $('#keyWord').val(), isAvailable: $('#isAvailable').val(), begin: $('#begin').val(), end: $('#end').val() }; console.log(typeof data) console.log(typeof JSON.stringify(data)) $.ajax({ type:'post', url:'http://localhost:8081/admin/ucenter/member/1/3', data: data, //鍵值對 //contentType:'application/json',//請求的數據類型 dataType: 'json', //返回的數據類型 success: function(result){ console.log(result) } }) }) }) </script>
後臺java接收:url
@requestMapping("admin/ucenter/member/{page}/{limit}") public R pageList(@PathVariable Long page, @PathVariable Long limit, QueryMember searchObject){ Page<Member> pageParam = new Page<>(page,limit); iMemberService.pageList(pageParam, searchObject); List<Member> records = pageParam.getRecords(); long total = pageParam.getTotal(); return R.ok().data("total",total).data("row",records); }
注意事項:不能用@requestParam註解接收對象類型,能夠接收單個屬性的,而且若是對象中有Date日期類型的數據,不加註解也接收不過
能夠將日期類型轉爲String或者添加上日期註解@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")