作者:2012-末日审判 | 来源:互联网 | 2023-05-26 12:36
我有一个类似于以下的功能(为简洁起见,这里简化)
$('.somelement').each(function(){
var me = $(this)
var mydata = me.data('somedata')
$.ajax({url:"phpfile.php?data=" + mydata}).done(function(returnedhtml){
console.log(mydata)
});
});
每个带有类的元素.someelement
都有不同的值somedata
.
当我在firebug中查看ajax调用时,我看到一个不同的mydata
传递给php文件.
但console.log(mydata)
每次都记录相同的值(即并不总是传递到ajax函数中的url的值)
我意识到这可能是由ajax调用的异步性质引起的,但即便如此,看起来"错误"也没有mydata
通过代码流来获得正确的.我尝试添加async:false
到ajax调用,问题就消失了,但是我得到一个警告:async:false在全局的东西中被弃用了.
是否有一种简单而正确的方法来完成我正在尝试做的事情($.ajax
在每个each()
循环中保持调用内部和外部的变量一致性.
1> Satpal..:
你可以使用自我调用功能(IIFE)
var mydata = me.data('somedata')
(function(data){
$.ajax({"phpfile.php?data=" + mydata})
.done(function(returnedhtml){
console.log(data);
});
})(mydata);