ajax中回調的幾個坑

在前端開發中,常常要用ajax去拿後臺接口返回的數據,總結幾個ajax的回調的常見問題,供你們參考爬坑。前端

  1. 未定義contentType,可能會形成的傳入後臺的數據亂碼,能夠加上以下代碼在ajax請求中 contentType:'application/json;charset=UTF-8',
  2. 約定好傳到後臺以及後臺返回的數據類型,通常定義json類型。
JSON.stringify():將一個JavaScript值(對象或者數組)轉換爲一個 JSON字符串
    JSON.parse():將一個 JSON 字符串轉換爲對象

這兩個是經常使用的json轉換的apiajax

  1. 在success或者error回調中,return 是拿不到值的,即便改變了async:false也拿不到,看下面的例子:
function checkUserTask(taskid){
        $.ajax({
            method:'get',
            url:URL.checkUserTask,
            async:false,
            data:{'id':taskid},
            success:(response)=>{
                console.dir(response)
                if(response.code==200 ){
                    return true;
                }else{
                   return false;
                }
            }
        });
    }

這種寫法即便是成功或者失敗,在調用checkUserTask方法時都是返回的undefined,拿不到true或者false標識,因此通常寫法修改以下:json

function checkUserTask(taskid){
        var flag = false;
      
        $.ajax({
            method:'get',
            url:URL.checkUserTask,
            async:false,
            data:{'id':taskid},
            success:(response)=>{
                if(response.code==200 ){
                    flag = true;
                }else{
                    flag = false;
                }
            }
        });
        return flag;
    }

在回調的後面return 就能夠拿到返回值。api

相關文章
相關標籤/搜索