我需要在页面上已经运行的ajax完成时触发一个函数。我要更新的功能将更新愿望清单项目计数器,而先前运行的功能会将项目保存在愿望清单中。
问题是(我想出了什么)-发出(初始化)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
是独立的event
。为什么要在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/