微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 在多个ajax请求完成后触发回调

loadInfo: function(){
    var jsonCounter = 0,room = ['room1','room2','room3'],dates = [],prices = []

    $.each(booking.rooms,function(key,room_name) {
        $.getJSON('/get_info.PHP?room='+room_name,function(data) {
            dates[room_name] = data
            jsonCounter++
        })
        $.getJSON('/get_info.PHP?room='+room_name+'&prices',function(data) {
            prices[room_name] = data
            jsonCounter++
        })

    })

    function checkIfReady() {
        if (jsonCounter === rooms.length * 2) {
            clearInterval(timer)
            run_the_rest_of_the_app()
        }
    }

    var timer = setInterval(checkIfReady,100)

}

(经过多次修改,因为它是类等的一部分等)

目前,这感觉有点hackish,因为计时器使用似乎是垃圾.我会使用$.when和$.done,但我不知道有多少房间,所以我不知道什么时候投入.

所有AJAX请求返回后,如何确保仅调用run_the_rest_of_the_app()?

解决方法

> var activeAJAX = 0; >在进行AJAX调用之前,activeAJAX; >完成AJAX调用(在回调中):if(–activeAJAX == 0){allDone(); }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐