我需要在页面上已经运行的 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/