【前端】Ajax的data赋值不了值给变量,回调函数不能赋值问题及解决办法

在我们写项目的过程中,难免会用到Ajax的异步提交。那么有时候的需求可能是这样的。
我们想把回调函数的data中的值赋值给外部定义的变量,但往往可能发现根本就没有赋值。

//创建一个flag变量
var flag="";
$.ajax(
	url:"请求的url地址",
	dataType:"返回的数据格式",
	data:{参数},
	success:function(data){
		flag=data;
	}
	console.log("flag":+flag);
)

//结果显示
flag:

           从结果我们可以看出,flag是一个空值,其实就是没有赋值给flag;
          这是什么原因造成的呢?其实Ajax有一个参数是async(是否异步),默认是true,就是要异步,那么js本身就是自上而下阻塞式的语言,一旦异步后,可以这么去理解。Ajax跟success里面那个function说 :“嘿哥们,你就等着返回的结果吧,我得先把下面的代码运行掉。”而如果把async设置成false,那么这时候是同步,也就是说Ajax跟success里面的那个function说:“嘿哥们,你等到返回的结果了吗?我得等你搞完我才能继续往下走啊。”这时候data就会把值赋值给flag,代码继续往下。

//创建一个flag变量
var flag="";
$.ajax(
	url:"请求的url地址",
	dataType:"返回的数据格式",
	async:false,
	data:{参数},
	success:function(data){
		flag=data;
	}
	console.log("flag":+flag);
)
//返回结果
flag:有值

           但是有时候不可能说要一直改成false,同步本身对于Ajax来说就是失去了意义的,那如果把data内的值传递出去方便我们做一些业务操作呢?
我们可以在回调方法里写一个业务方法。如下:

//创建一个flag变量
var flag="";
$.ajax(
	url:"请求的url地址",
	dataType:"返回的数据格式",
	async:true,
	data:{参数},
	success:function(data){
		myservice(data)
	}
)
function myservice(data){
	//业务代码块
}

特别注意的是:$.post和$.get方法就是异步,想同步的话用$.ajax。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰肥啊

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值