普通jQuery的Ajax請求代碼如下:
$.ajax({
type: 'POST',
url: "http://xxx/yyy/zzz/sendVerifyCode",
data:{
phoneNo:$(".tel").val()
},
success: function(data){
$.toast("發送成功", "text")
},
error: function(){
$.toast("發送失敗", "text")
}
})
一、如果POST接口返回500,請求的參數如下圖,圖中的傳參方式為Form data:


1.需要加上contentType:'application/json',傳參方式會變為Request Payload(裝載量)。
2.需要加上JSON.stringify封裝對象,這個問題在傳遞一個多鍵值對的對象會出現,如果是只有一個key-value的鍵值對則可加可不加。
代碼示例如下:
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 })
然后請求變為了對象格式。

HTTP兩種傳參方式的區別:
Form Data:當POST請求的請求頭里設置Content-Type: application/x-www-form-urlencoded(默認),參數在請求體以標准的Form Data的形式提交,以&符號拼接,參數格式為key=value&key=value&key=value。
Request Payload:當使用AJAX原生POST請求,請求頭里設置Content-Type:application/json,請求的參數會顯示在Request Payload中,參數格式為JSON格式:{“key”:”value”,”key”:”value”…},這種方式可讀性會更好。
二、使用Ajax發送請求時返回Canceled,未請求到接口,則需加上async:false即可解決。
