zoukankan      html  css  js  c++  java
  • 关于ajax中return并不能作为方法的返回值

    接下来关于ajax中的return值最后没有办法是方法的最终返回值问题

    login(username,password)
    
    {
    
    console.log("进入方法");
    
    $.ajax({
    
    type:"POST",
    
    url:"http://192.168.28.168:1314/api/Users/login",
    
    dataType:"Json",
    
    data:{
    
    "username":username,
    
    "password": password,
    
    },
    
    success:function(data){
    
    console.log("调用接口成功")
    
    console.log(data.statusCode);
    
    return data.statusCode;
    
    },
    
    error:function(err){
    
    console.log("调用接口失败");
    
    status = 0;
    
    }
    
    });
    
    }

    我们能看到方法中明明return了但是 调试却发现 这个方法的返回值是defined

    其实因为在ajax方法中return只是退出了ajax方法 并非是login方法的返回值

    然后我们设置一个新的变量,然后在ajax内部赋值,最后在ajax方法外return试试

     

    仍然不行

    Ok这就涉及到ajax是异步行为,所以就是在return的时候ajax不一定拿到了值

     

    我希望只有当status有数据的时候再返回

    那其实这个思路就是错的因为是异步 的这个if只能判断一次不是反复判断的

    也就是说在ajax拿到值之后也未必会在进入status判断

    尝试用setState的方法结果发现setState 竟然打印的结果不同

     

    最后的解决方案,换个思路,你未必一定要让你的方法有返回值可以把方法写在ajax的success函数中去。

     

  • 相关阅读:
    swiper插件的使用demo
    可能要用的东西
    VIDEO
    vue上传图片加水印
    图片 base64 file blob 之间相互的转化
    vant 上传图片加水印
    JS 随机排序算法
    ubuntu16.04 下apache 搭建站点
    Unity常用目录对应的Android && iOS平台地址
    IOS 官方实现单例模式
  • 原文地址:https://www.cnblogs.com/RikuBlog/p/9530666.html
Copyright © 2011-2022 走看看