普通jQuery的Ajax請求代碼以下:javascript
$.ajax({ type: 'POST', url: "http://xxx/yyy/zzz/sendVerifyCode", data:{ phoneNo:$(".tel").val() }, success: function(data){ $.toast("發送成功", "text") }, error: function(){ $.toast("發送失敗", "text") } })
1、若是POST接口返回500,請求的參數以下圖,圖中的傳參方式爲Form data:html
1.須要加上contentType:'application/json',傳參方式會變爲Request Payload(裝載量)。java
2.須要加上JSON.stringify封裝對象,這個問題在傳遞一個多鍵值對的對象會出現,若是是隻有一個key-value的鍵值對則可加可不加。ajax
代碼示例以下:json
1 $.ajax({ 2 type: 'POST', 3 url: "http://xxx/yyy/zzz/register", 4 data: JSON.stringify({ 5 username:$(".tel").val(), 6 smsVerifyCode:$('.captchaVal').val(), 7 realName:$('.username').val(), 8 email:$('.email').val(), 9 password:$(".pwd").val(), 10 }), 11 contentType:'application/json', 12 success: function(data){ 13 if(data.code===200){ 14 $.toast("註冊成功", "text") 15 setTimeout(function () { 16 location.href = "login.html" 17 }, 500); 18 }else { 19 $.toast(data.message, "text") 20 } 21 }, 22 error: function(){ 23 $.toast("註冊失敗", "text") 24 }, 25 dataType: "json", 26 })
而後請求變爲了對象格式。app
HTTP兩種傳參方式的區別:async
Form Data:當POST請求的請求頭裏設置Content-Type: application/x-www-form-urlencoded(默認),參數在請求體以標準的Form Data的形式提交,以&符號拼接,參數格式爲key=value&key=value&key=value。url
Request Payload:當使用AJAX原生POST請求,請求頭裏設置Content-Type:application/json,請求的參數會顯示在Request Payload中,參數格式爲JSON格式:{「key」:」value」,」key」:」value」…},這種方式可讀性會更好。spa
2、使用Ajax發送請求時返回Canceled,未請求到接口,則需加上async:false便可解決。code