解决ajax无法给外部变量赋值

因为Ajax默认是以异步方式来获取数据的,执行Ajax的时候你程序是继续往下面执行的,这样你那个变量没有被Ajax方法赋值,

  
  function btnclick() {
            var flag = "";
            console.log(flag)
            $.ajax({
                type: 'get', // 请求方式
                dataType: 'text',
                url: 'js/data.json', // 接口
                success: function(data) {
                    flag = 'asdasd';
                    console.log(flag);
                },
                error: function(data) {
                    flag = 'asdasdasdasdasd';
                    console.log(flag)
                }

            });
            console.log(flag);
            return flag;

        }

在ajax中设置async:false;也就是同步
当async为false的时候,意味着ajax请求为同步的,那么这个API就默认你是直接通过$.ajax()这个方法调用所返回的结果去取值,而不是通过success回调函数进行取值,所以也就不会调用success这个回调函数。

        
  function btnclick() {
	       var flag = "";
            console.log(flag)
            $.ajax({
                type: 'get', // 请求方式
                dataType: 'text',
                url: 'js/data.json', // 接口
                async: false,  // 同步操作
                success: function(data) {
                    flag = 'asdasd';
                    console.log(flag);
                },
                error: function(data) {
                    flag = 'asdasdasdasdasd';
                    console.log(flag)
                }

            });
            console.log(flag);
            return flag;

        }
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值