前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ajax中回调的几个坑

ajax中回调的几个坑

作者头像
全栈程序员站长
发布2022-07-21 14:02:27
7040
发布2022-07-21 14:02:27
举报

大家好,又见面了,我是你们的朋友全栈君。

在前端开发中,经常要用ajax去拿后台接口返回的数据,总结几个ajax的回调的常见问题,供大家参考爬坑。

  1. 未定义contentType,可能会造成的传入后台的数据乱码,可以加上如下代码在ajax请求中 contentType:'application/json;charset=UTF-8',
  2. 约定好传到后台以及后台返回的数据类型,一般定义json类型。
代码语言:javascript
复制
    JSON.stringify():将一个JavaScript值(对象或者数组)转换为一个 JSON字符串
    JSON.parse():将一个 JSON 字符串转换为对象

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

  1. 在success或者error回调中,return 是拿不到值的,即使改变了async:false也拿不到,看下面的例子:
代码语言:javascript
复制
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标识,所以一般写法修改如下:

代码语言:javascript
复制
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 就可以拿到返回值。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/107409.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档