2013-05-18 23 views
1

我展示我的门户Ajax login form各种用户行为,一旦成功登录我想更新一些div's为我用下面的代码,jQuery ajaxStop()会进行递归调用吗?如果是的话,如何阻止它?

$(document).ajaxStop(function(){ 

     $.get($(location).attr('href'),function(html){ 
     var $html = $(html); 
     $('#topBar').html($html.find('#topBar')); 
     $('#commentsForm').html($html.find('#commentsForm')); 
     }); 
    }); 

将上面的代码导致任何递归调用Ajax?目前其工作如预期,但我想清楚地知道它。

更新:

我一直logajaxStop然后打印log message末递归那么它清楚地表明,上面的代码进行递归调用。

+0

你是如何确定它按预期工作的?您是否检查过浏览器开发人员工具的网络标签? –

回答

2

我认为这会导致递归。所有其他AJAX调用完成后,此处理程序将调用。它将启动一个新的AJAX调用$.get(),并且当完成时它将触发处理程序,该程序将调用$.get(),依此类推。

为了防止这种情况,你可以这样做:

$.ajaxSetup({ global: false }); 

,以防止全球AJAX处理程序的运行。或将$.get()替换为等效的$.ajax()调用,并在其选项参数中使用global: false

+0

有没有其他办法呢?感谢您的回复 –

+0

感谢它为我工作,我可以通过保持日志进行检查。 –

0

是:http://jsfiddle.net/GghtK/

ajaxStop()侦听所有未来的Ajax调用(你正在创建一个事件侦听器ajaxStop事件,jQuery的触发毕竟优秀的Ajax请求完成),那么你正在创建从内一个新的Ajax请求当然作为回报的回调将触发ajaxStop事件。

相关问题