首页 > 解决方案 > 如何避免 Ajax 调用中的循环

问题描述

我有getData()进行 ajax 调用和检索JSON数据的功能。成功后,我调用另一个函数,即marquee(). 在完成事件的选框内我getData()再次调用,但是每次getData()被调用时,它都会增加对提到文件的请求data.php,例如第一次调用它调用一次,第二次调用它请求两次,然后两次变成 4 次、8 次和更多,如何避免这种情况?!

function getData()
{
  $.get('data.php).done(function(response)
{
var data = JSON.parse(response);
if(data.Direction == "left")
{
$(".marquee").html("<span data-direction='"+data.Direction+"'>"+data.Message+"</span>");
}else if(data.Direction == "right"){ 
$(".marquee").html("<span data- direction='"+data.Direction+"'>"+data.Message+"</span>");
}    
});
}

function marquee()
{
   $(".marquee").marquee({duration : 10000}).bind("finished",function()
  {
    getData(); 
  });
}

我希望我很清楚......感谢每个答案。

标签: ajax

解决方案


每次调用 marquee 函数时,基本上都是在绑定一个完成的事件。在多个此类函数调用中,您将有重复的事件。在您的代码设置中,您需要在绑定之前取消绑定该函数。就像是

$(".marquee").marquee({duration : 10000}).unbind("finished",getData).bind("finished",getData)

理想情况下,您应该只绑定一次,这样您就不必一次又一次地解除绑定。


推荐阅读