2014-09-21 4 views
0

У меня есть jquery.ajax, который всегда запрашивает данные на сервере. Моя проблема в том, что когда я нажмите меню навигации, я не могу перемещаться, это слишком медленно Я попытался прокомментировать метод внутри успеха, он отлично работает, я могу перемещаться очень быстро, потому что запрос не запущен ... Любая идея, как заставить эту работу работать с запросом одновременно, и я могу перейти на другую страницу .?.работает jquery.ajax вызывает замедление при переходе на другую страницу

Больше ввода значительно оценили.

Заранее спасибо.

$(function(){ 
     getUpdates(); 

    }); 


    function getUpdates(){ 
      type: "GET", 
      dataType:'json', 
      url: "updates.php", 
      error: function() { 
       setTimeout(getUpdates, 5000); 
      }, 
      success: function(data){ 
       //do something with the data 
       ... 
       ... 
       ... 
       getUpdates(); //call again the function 

      } 

     }); 

    } 
+0

попробуйте использовать 'setTimeout (getUpdates, 5000);' inside' success: ', а не' getUpdates(); ' – ariel

ответ

1

Не рекомендуется начинать новый запрос, как только завершится предыдущий запрос. Для вашей проблемы нет (хорошего) решения - лучшая идея - перестроить свой код. Поскольку вы постоянно объединяете сервер для получения новой информации, вы можете посмотреть в Comet или Socket.IO, чтобы реализовать какой-то механизм push с сервера.

Это говорит о том, что для простого ускорения самое лучшее, что вы можете сделать, это добавить тайм-аут в функцию успеха так же, как и с функцией ошибки.

+0

в порядке. Я постараюсь установить тайм-аут в моем успехе. – kelly123

+0

Как реализовать сокет I.O, как в моем jquery.ajax? – kelly123

+0

достаточно 5 секунд или это слишком быстро? – kelly123

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