$(document).ready(function() {
musicList = new array()
counter = 0;
if($(".rA, .trA, .dA, .hA").length > 0)
{
/*$(".rA, .trA, .dA, .hA").each(function(e){*/
$(".hA").each(function(e){
$.post("/index/audio/ajax.track", { id: $(this).attr("rel") },
function(data){
/*THIS DOESN'NT WORK */
musicList.push(data.file);
/*THIS DOESN'NT WORK */
alert(data.file);/*this words*/
}, "json");
counter++;
});
if(counter>0)
{
alert(counter);
}
}
});
我没有看到代码有什么问题,但我不知道为什么它不起作用我花了3个小时试图让它工作
/ 修改的/ 修复它...推动工作警报(计数器)有点愚蠢我的原因ajax = async
谢谢大家
答案 0 :(得分:1)
;
结束语句。$(f)
代替$(document).ready(f)
[]
代替new Array()
您的代码问题可能是您传递给$.post
的函数正在稍后运行,但是会立即返回控件,所以当您到达开头的行时if(counter>0)
,该函数从未执行过。你可以通过每次调用$ .post时递增一个变量来解决这个问题,当你收到数据时你会减少并检查所有帖子是否都已返回,如果是,你就可以做你想做的事情。例如:
//...
var list = [];
var counter = 0;
$(".something").each(function() {
counter++;
$.post("http://www.example.com/", {foo = "bar"}, function(data) {
list.push(data);
counter--;
if(counter === 0){
alert(list.length);
};
})
});
//...