Как избежать зацикливания в вызове Ajax - PullRequest
0 голосов
/ 30 августа 2018

У меня есть функция getData(), которая выполняет вызов ajax и получает JSON данные. В случае успеха я вызываю другую функцию, которая marquee(). внутри 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(); 
  });
}

Надеюсь, я был ясен ... Ценю каждый ответ.

1 Ответ

0 голосов
/ 30 августа 2018

Каждый раз, когда вы вызываете функцию выделения, вы в основном привязываете к ней завершенное событие. При нескольких таких вызовах функций у вас будут повторяться события. В настройках вашего кода необходимо отсоединить функцию перед ее привязкой. Что-то вроде

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

В идеале, вы должны связывать только один раз, чтобы вам не приходилось связывать его снова и снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...