zoukankan      html  css  js  c++  java
  • 一个方法中的ajax在success中renturn一个值,但是方法的返回值是undefind?

    https://segmentfault.com/q/1010000003762379

    A页面

    console.log(handleData("search_list", "http://192.168.1.11/Sueach/index", data));//undefind
    //            if(handleData("search_list", "http://192.168.1.11/Sueach/index", data)=="none"){
    //                document.querySelector(".search-error").style.display="block";
    //            }

    js页面

    请输入代码function handleData(warp, url, par) {
        par.mobile = mobile;
        mui.ajax(url, {
            data: par,
            dataType: 'json',
            type: 'get',
            timeout: 10000,
            success: function(data) {
                console.log(data.status);//为0
                if (data.status == 0) {
                    console.log(""执行了);//执行到这
                    return "none";
                }
                handleJson(data.data, warp, par.p);
    
            },
            error: function(xhr, type, errorThrown) {
                console.log(type);
            }
        });
    }

    为什么console.log输出的为undefined呢?

     
     

    3 个回答

     

    1

     
    采纳

    handleData 没有返回值默认值是undefined 我一般这样写

    function handleData(warp, url, par) {
        var result="";
        par.mobile = mobile;
        mui.ajax(url, {
            data: par,
            dataType: 'json',
            type: 'get',
            async:false,//
            timeout: 10000,
            success: function(data) {
                console.log(data.status);//为0
                if (data.status == 0) {
                    console.log(""执行了);//执行到这
                    result= "none";
                    return;//这里会退出success函数
                }else{//这样在status!=0时才执行,
                    handleJson(data.data, warp, par.p);
                }
                
    
            },
            error: function(xhr, type, errorThrown) {
                console.log(type);
            }
        });
        
        return result;
    }
     

    1

     

    1)mui.ajax是个异步调用方法啊,handleData方法返回时候, mui.ajax还没执行完呢
    2)handleData方法没有返回值,就返回默认的undefined

     

    1

     

    楼上两位都是正解,你要用返回值需要用ajax同步模式,即二楼的代码中 async:false,默认为true是异步,设为false为同步

  • 相关阅读:
    三十二、恢复单库单表
    三十一、XBK备份
    三十、分库分表备份脚本
    二十九、mysqldump恢复案例
    二十八、mysqldump备份
    二十七、备份介绍
    二十六:慢日志分析
    二十五、二进制日志之GTID模式
    Trie树
    AC自动机
  • 原文地址:https://www.cnblogs.com/antis/p/5458728.html
Copyright © 2011-2022 走看看