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


普通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即可解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM