问大家一个关于$.ajax的问题
发布于 2年前 作者 ringtail 767 次浏览

我现在遇到这样的而一个问题,先看下代码: var name; $.ajax({ url:"", success:function(){ //赋值; }); 但是ajax是异步的,也就是如果这时name赋值是暂时参与赋值的,如果用return来做的话,那就和同步没有区别了 如果不想把过多的逻辑写到回调之中,大家有没有好的办法,希望大牛们指导一下。

9 回复
var getName = function(cb){
  $.ajax({
        url : '',
        success : function(data){
            cb(data.name);
        }
    });
}
getName(function(name){
    var _name = name;
});

这样呢?

这是一样的呀,还是要在这个位置赋值,如果取用的话,还是未定义的赋值啊

异步的话不可能先取用的吧?不管怎么写你的其余的逻辑都应该是在回调结束才会做的吧?

要不然就是增加标志位,循环判断,然后取值。

在ajax的回调函数里,赋值后再执行相关的动作。比如显示 name 什么的。

你的意思是动作的逻辑全都写在回调函数中?还是赋值然后跳出回调,但是这种方式是无法获得参数数据的,因为ajax是异步的

@ringtail 回调函数也可以有参数传进去。我一般用 bind(context)给回调函数一个 scope。传入的参数(在 context 这个对象里)在回调函数里用 this 来取得。另一个办法是用成员函数,也是用 this 来取得参数。最后一个笨点的办法是用全局变量。

哦?好像有点意思了,我去试试,谢谢啦!

哦?好像有点意思了,我去试试,谢谢啦

回到顶部