ajax中回调的几个坑

在前端开辟中,常常要用ajax去拿背景接口返回的数据,总结几个ajax的回调的常见问题,供人人参考爬坑。

  1. 未定义contentType,可能会形成的传入背景的数据乱码,能够加上以下代码在ajax要求中 contentType:'application/json;charset=UTF-8',
  2. 约定好传到背景以及背景返回的数据范例,平常定义json范例。
    JSON.stringify():将一个JavaScript值(对象或许数组)转换为一个 JSON字符串
    JSON.parse():将一个 JSON 字符串转换为对象

这两个是经常使用的json转换的api

  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标识,所以平常写法修正以下:

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 就能够拿到返回值。

    原文作者:monkeykg
    原文地址: https://segmentfault.com/a/1190000015689366
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞