javascript - 仅执行一次completeAjax

标签 javascript jquery ajax

我需要在页面上已经运行的 ajax 完成时触发一个函数。我想要更新的函数将更新愿望 list 项目计数器,并且之前运行的函数将项目保存在愿望 list 中。

问题是(我已经弄清楚)-发出(初始化)ajax请求后,在等待成功消息时,该函数再次执行自身。

底线,我希望 ajaxComplete 函数部分只运行一次。请为我指明正确的方向

jQuery(document).ready( function() {

    var token = false;

    jQuery( '.add_to_wishlist' ).on( 'click', function() {

            if( token == false ) {

                jQuery(document).ajaxComplete(function() {

                    console.log('Entered Click!');

                    token = true;

                    jQuery.ajax({

                        url: wishajax.ajax_url,
                        data: {
                            action: 'vg_inject_wish',
                        },
                        success: function( response ) {

                            console.log('Entered Success!');

                            jQuery( '.wishlist-container' ).html( response );

                            console.log('After Success!');

                            token = true;

                        }

                    }); 

                });

            }
    });

});

最佳答案

jQuery(document).ajaxComplete 是一个独立的事件。为什么要将它组合到 click 事件中并在其中再次写入 jQuery.ajax ?将关注点分开如下:

jQuery(document).ajaxComplete(function() {
    token = true;//If you need this only in success then no need to put it here as this 
    //will get executed irrespective of ajax result
});

jQuery( '.add_to_wishlist' ).on( 'click', function() {
    if( token == false ) {
          jQuery.ajax({
                 url: wishajax.ajax_url,
                 data: {
                      action: 'vg_inject_wish',
                 },
                 success: function( response ) {
                      console.log('Entered Success!');
                      jQuery( '.wishlist-container' ).html( response );
                      console.log('After Success!');
                      token = true;
                 }
           }); 
    }
});

关于javascript - 仅执行一次completeAjax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33237285/

相关文章:

javascript - 使用 .map 和 .filter 格式化数据

jquery - Parallax Scroll Site - 动态触发鼠标滚动

javascript - ajax实时搜索最后一个字符

javascript - 如何进行 AJAX 调用 - Elgg

php - 如何在浏览器窗口关闭时使 session 过期

javascript - 如何防止div在隐藏时触发其父项的mousemove

javascript - querySelectorAll 不选择带有名称的选择框

javascript - 如何在用户滚动时更改颜色

javascript - jQuery UI 对话框 - 停止关闭事件

jquery - 获取 400 错误请求 SharePoint 2013 Rest API