簡體   English   中英

在成功的Ajax請求上禁用JavaScript功能

[英]Disable javascript function on successful ajax request

具體來說,我想禁止某個函數在成功的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請求,因此我需要禁用此功能。

您可以簡單地添加flag變量的邏輯。 這將確保您的加載方法在ajax成功后不會執行。

<script>

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

希望這對您有幫助

您可以創建標志,可以在“文檔就緒”上將其設置為“ true”,然后在成功進行ajax調用后將其設置為“ false”。

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

您不需要任何if語句和其他變量。

看下面的代碼:

var load = function () {
    ...
};
$( document ).ready(function() {
    $.ajax({
        ...
        success: function () {
            //"delete" the `load` function
            load = '';
        }
    });
});

load函數存儲在變量中,當ajax請求成功時,該變量將被清除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM