jQuery發送Ajax請求以及出現的問題

普通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

相關文章
相關標籤/搜索