如果上次完全加载并成功,则仅再次运行ajax

时间:2014-06-17 21:50:44

标签: javascript php jquery ajax

向下滚动并将内容加载到我的页面时出现问题。 ajax执行加载太快,所以第二个,第三个等等......从第一个ajax调用中获取正确的信息,这些信息被加载到DOM中。

如何制作,所以只有在最后一次ajax调用完成且成功时才会运行脚本。 它应该跳过每次向上和向下滚动,直到最后一次ajax调用完成。然后允许执行ajax。 然后一遍又一遍,直到没有更多的东西通过ajax加载。

这是我的jQuery脚本。

<script type="text/javascript">
$(document).ready(function(){   

    $(window).scroll(function(){

          if  ($(window).scrollTop() <= $(".wrapper_ac").offset().top + $(".wrapper_ac").height()) {

            $(document).ajaxStart(function () {
            var ajaxURLvalue = '../../modules/language_text_loading/load_content.php';
            var langID = 'x';
            var onID = 'x';
            var setLimit = 'x';
            var setIn = 'after';
            var theme = 'x';
            var setInWhere = 'x';
            var conID = 'x';

            loadInstant(ajaxURLvalue, langID, onID, setLimit, setIn, theme, setInWhere, conID);
            });
           }
    }); 

});
</script> 

这是我的功能。

function loadInstant(ajaxURLvalue, langID, onID, setLimit, setIn, theme, setInWhere, conID) {     

    var temp_s = $(".ltlID:last").attr("id");
    var split_ltlID = temp_s.split(':');
    var ltlID = split_ltlID[0];
    var acContentBoxID = split_ltlID[1];

    var dataString = {
        action: 'load',
        last_ltlID: ltlID,
        //sharedID:acContentBoxID_sharedID,
        langID:langID,
        setInWhere: setInWhere,
        onID:onID,
        theme:theme,
        conID:conID
    };

        $.ajax({
            type: "POST",
            url: ajaxURLvalue,
            data: dataString,
            cache: false,
            success: function(html){

                        $("#accordionContent"+acContentBoxID+":last").after(html);

        });    
};  

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我要做的就是将ajax函数存储到这样的全局变量中:

   global_variable =     $.ajax({
            type: "POST",
            url: ajaxURLvalue,
            data: dataString,
            cache: false,
            success: function(html){

                        $("#accordionContent"+acContentBoxID+":last").after(html);

        });

在ajax调用之前检查变量是否像这样:

if(global_variable){
   return false;
}

这将停止在运行结束之前调用任何ajax调用。我希望它可以帮到你!