Твиттер мод начальной загрузки отправляет двойной запрос AJAX - PullRequest
0 голосов
/ 24 января 2012

Я работаю над проектом rails как разработчик внешнего интерфейса, и мы используем загрузчик Twitter. Итак, у меня есть какой-то поисковый модал, и когда вы что-то набираете и нажимаете enter, вызывается ajax и результаты поиска показаны ниже..

$('#search_term').live("keyup", function(event) {
if (event.keyCode == '13') {
doSearch(this);
}
});

и когда вы нажимаете Enter, есть 2 ajax-звонка ..

Я исправил это, вызвав die () перед прямой трансляцией, и теперь он отправляет только один запрос, как должно быть.. но я не понимаю в чем была проблема?!

$('#search_term').die("keyup").live("keyup", function(event) {
if (event.keyCode == '13') {
doSearch(this);
}
});

Может кто-нибудь объяснить, почему это происходит?!

1 Ответ

0 голосов
/ 25 января 2017

Если с помощью die () вы решите проблему, скорее всего, вы вызываете живой метод более одного раза.

 $('#search_term').on("keyup", function(event) {
  if (event.keyCode == '13') {
    console.log("ENTER!")
  }
});

$('#search_term').on("keyup", function(event) {
  if (event.keyCode == '13') {
    console.log("ENTER!")
  }
});

(Рефакторинг кода, потому что .live устарел)

Попробуйте это fiddle и откройте консоль разработчика. Если вы нажмете ввод внутри ввода, он вызовет console.log () несколько раз.
В этом примере вы добавляете новые функции к событию keyup, и в результате этого при запуске keyup будут запускаться все функции
Вместо .die (теперь это .off) удалите предыдущие добавленные функции. Смотрите этот пример:

 $('#search_term').off("keyup").on("keyup", function(event) {
  if (event.keyCode == '13') {
    console.log("ENTER!")
  }
});

$('#search_term').off("keyup").on("keyup", function(event) {
  if (event.keyCode == '13') {
    console.log("ENTER!")
  }
});

Попробуйте сейчас этот измененный fiddle и убедитесь, что функция вызывается только один раз.

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