2012-06-13 1 views
0
$(document).keydown(function(e){ 
     if (e.keyCode == 37) { 
      move("West"); 
      return false; 
     } 
     if (e.keyCode == 38) { 
      move("North"); 
      return false; 
     } 
     if (e.keyCode == 39) { 
      move("East"); 
      return false; 
     } 
     if (e.keyCode == 40) { 
      move("South"); 
      return false; 
     } 
    }); 

     function move(newDirection) 
     { 
      var direction = newDirection; 

      $.ajax({ 
       type: "POST", 
       url: "ajax/map.php", 
       data: { direction: direction }, 
       success: function(data) { 
        $('#content').html(data); 
       } 
      }); 
     } 

Если я держать нажатой левую клавишу а, в то время как слишком долго, то вызов будет продолжать прибывать и прибывать, и он (не остановится) Я ищу, чтобы сделать некоторую задержку, или просто просто сделайте один звонок, когда нажата клавиша (или, возможно, мгновенно остановитесь при отпускании клавиши). Но я не уверен, как это сделать. Любые предложения по решению?Прекратить вызов Ajax

ответ

1

Вы можете изменить событие keydown на keyup, поэтому он будет срабатывать только при прекращении нажатия кнопки. Это поможет?

Вы также можете найти эту нить полезную: Abort Ajax requests using jQuery

Я сделал пример: http://jsfiddle.net/kdDwd/2/

+0

Мне бы хотелось, чтобы он прекратил вызов, когда ключ освобожден (но мгновенно не делает больше вызовов). Поскольку, если я держусь за бит, персонаж будет продолжать двигаться, может возникнуть какая-то задержка? Или просто остановитесь мгновенно. – John

+0

Отличный пример, но он работает только один раз. Тогда я не могу двигаться, когда пытаюсь. – John

+0

Примите во внимание, что в примере один клик, скорее всего, ничего не сделает, поскольку сценарий будет прерван до того, как он получит возможность получить ответ ajax. – iMoses

0

ограничить вызовы в единице времени вы должны использовать дребезг образец - вот статья о парне писать плагин для этого - http://habrahabr.ru/post/60957/ (на английском, надеюсь, google translate помогает)

Смежные вопросы