Ajax调用阻止其他javascript代码

时间:2016-07-08 05:23:01

标签: javascript jquery html ajax dom

我在页面和页面上使用 flex滑块也为其他作业进行 ajax调用。我的问题是当用户加载页面时, ajax调用阻止 flex滑块,直到ajax请求尚未完成。完成ajax请求后,flex滑块加载成功。如果我删除ajax脚本然后flex滑块加载速度非常快。

Flex滑块和ajax请求都写在此代码之间......

$(document).ready(function(){
    $('#carousel').flexslider({
        animation: "slide",
        controlNav: true,
        animationLoop: true,
        slideshow: false,
        itemWidth: 100,
        itemMargin: 15,        
        asNavFor: '#slider'        
    });

    // Rest code of slider will come here

    // Ajax code start from here    
    $.ajax({ 
            type: "GET",
            async:false,
            url: prefixUrl, 
            success: function(results) { 
                    $(results).insertBefore('.event_container'); 
            }
        });

});

请建议任何想法,以便ajax调用不应阻止flex滑块。

谢谢

2 个答案:

答案 0 :(得分:4)

Async false将等待您的操作完成。

试试这个:

$.ajax({ 
        type: "GET",
        async:true,
        url: prefixUrl, 
        success: function(results) { 
                $(results).insertBefore('.event_container'); 
        }
    });

//更新2:

实际上它正在发生,因为你已经在准备好的函数中添加了Ajax,所以在你的ajax运行之前,页面就绪事件没有完成。尝试将其从准备好的文档中删除。

答案 1 :(得分:0)

我们使用ajax来获取回发操作,并且在您提到的代码中提到了async:false,这会导致同步ajax调用。同步ajax调用使您可以停止/阻止,直到您获得上一个请求的响应。所以试试这个:

$.ajax({ 
    type: "GET",
    url: yourURL, 
    success: function(results) { 
            $(results).insertBefore('.event_container'); 
    },
    async:true
});