javascript - 在成功的 ajax 请求上禁用 javascript 函数

标签 javascript ajax

具体来说,我想禁止某个函数在成功的 ajax 请求上执行。我不知道这是否可能,或者是否有任何解决方法。看看我做了什么:

<script>
$(document).ready(function() {
  function load(){
  ...
  ...
  }
});
$.ajax({
  ...
  success: function(option){
   disable load function // I want this functionality somehow
  }
});
</script>

有人可以帮忙吗?我需要这个,因为加载函数是一个滚动函数,它在滚动到结束时加载产品,并且在ajax请求时另一个文件使用相同的产品,所以不知何故我需要禁用此功能。任何帮助将不胜感激。

编辑

我希望此函数在第一次页面加载时工作,但在成功的 ajax 请求后我希望停止此函数。我将完整的代码放出来,以便您获得清晰的想法。

<script>
$(document).ready(function() {
var track_load = 0;
var loading  = false;
var total_groups = <?php echo $total_groups; ?>;
var cat_id= <?php echo $cat_id; ?>;
$('.autoload').load("xyz.php", {'group_no':track_load, 'cat_id':cat_id}, function() {track_load++;});

$(window).scroll(function() { 
    if($(window).scrollTop() + $(window).height() == $(document).height())
    {
        if(track_load <= total_groups && loading==false)
        {
            loading = true; //prevent further ajax loading
            $('.animation_image').show();

            $.post('xyz.php',{'group_no': track_load, 'cat_id':cat_id}, function(data){

                $(".autoload").append(data);

                $('.animation_image').hide();

                track_load++;
                loading = false; 

            }).fail(function(xhr, ajaxOptions, thrownError) { 
                $('.animation_image').hide();
                loading = false;

            });

        }
    }
});
});
</script>
<script>
$(document).ready(function(){
$('#subcat').change(function(){
    var val=$(this).val();
    $(this).value= val;
    $('#furcat').show();
    if(val=='A'){
        $('#furcat').html("<option selected='true' disabled='disabled'>Choose Further Category</option><option>B</option><option>C</option>");
        var sub_cat=41;
    }
    $('.autoload').empty();
    $('.animation_image').show();
    $.ajax({
        type: "POST",
        url: "abc.php",
        data: {sub_cat:sub_cat},
        success: function(option){
            $('.autoload').replaceWith(option);
            $('.animation_image').hide();
        }
    });
});
});
</script>

由于我需要在即将到来的数据中使用相同的滚动功能,因此我涉及另一个 php 文件,该文件使用与此相同的代码并删除双 ajax 请求,我需要禁用此功能。

最佳答案

您可以创建标志,在文档就绪时将其设置为“true”,然后在成功的 ajax 调用后将其设置为“false”。

<script>
var flag=true;
$(document).ready(function() {
  flag = true;
  function load(){
   if(flag){
   ...
   ...
   }
  }
});
$.ajax({
  ...
  success: function(option){
   flag=false;
  }
});
</script>

关于javascript - 在成功的 ajax 请求上禁用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269393/

相关文章:

javascript - ng-在angularjs中动态重复文本框中的总和值

javascript - 选择其他选择器的值时,如何隐藏选择器?

javascript - 通过 JavaScript 直接访问 MongoDB

javascript - 如何在 edit.html.erb 中显示复选框 'checked state'

javascript - 如何使用react js将html表单提交的信息显示到另一个页面上?

javascript - 大量同时连接

javascript - 想调用 div 但换行 javascript ajax

javascript - 发送 AJAX 请求的属性列表上的正则表达式标志 b 无效

javascript - 我如何设计一个网页来显示服务器需要很长时间才能生成的数据?

javascript - 如何在 $.post jQuery 中等待响应