我在门户网站上显示Ajax login form
各种用户操作,一旦成功登录,我想更新一些div's
,因为我正在使用以下代码,
$(document).ajaxStop(function(){
$.get($(location).attr('href'),function(html){
var $html = $(html);
$('#topBar').html($html.find('#topBar'));
$('#commentsForm').html($html.find('#commentsForm'));
});
});
以上代码是否会导致任何递归Ajax
调用?目前它按预期工作但我想清楚地知道它。
更新
我将log
保留在ajaxStop
的末尾,然后递归打印log message
,然后清楚地显示上面的代码进行递归调用。
答案 0 :(得分:3)
我认为这会导致递归。完成所有其他AJAX调用后,此处理程序将调用。它将使用$.get()
启动一个新的AJAX调用,一旦完成,它将触发处理程序,它将调用$.get()
,依此类推。
为了防止这种情况,你可以这样做:
$.ajaxSetup( { global: false } );
阻止全局AJAX处理程序运行。或者使用等效的$.get()
调用替换$.ajax()
,并在其options参数中使用global: false
。
答案 1 :(得分:0)
ajaxStop()
侦听所有未来的ajax调用(您正在创建一个事件监听器,以便在完成所有未完成的ajax请求后jQuery触发ajaxStop
事件)然后您从内部创建一个新的ajax请求回调当然会引发ajaxStop
事件。