代码之家  ›  专栏  ›  技术社区  ›  Aqil

如何避免Ajax调用中的循环

  •  0
  • Aqil  · 技术社区  · 7 年前

    我有功能 getData() 进行ajax调用和检索 JSON 数据。一旦成功,我调用另一个函数 marquee() 获取数据() 又一次,但每次 获取数据() 当get被调用时,它会增加对文件的请求 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(); 
      });
    }
    

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   cdoshi    7 年前

    每次调用marquee函数时,基本上都是将已完成的事件绑定到它。在多个这样的函数调用中,您将有重复的事件。在代码设置中,需要在绑定函数之前解除绑定。像这样的

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