остановить AJAX JQuery нагрузки при отправке - PullRequest
2 голосов
/ 30 марта 2011

У меня есть jquery ex, как это ..

jQuery(document).ready(function() {
   var refreshId = setInterval(function() {
      jQuery("#results").load('random.php?randval='+ Math.random()+'&hours='+jQuery('#hours').val()+'&mins='+jQuery('#mins').val()+'&seconds='+jQuery('#seconds').val());
      jQuery("#time_spent").val(jQuery("#results").html());
   }, 1000);
});

и кнопка отправки вроде этого

<input type="submit" name="submit" value="Stop" id="submit" />

Теперь, если нажата кнопка отправки, загрузка ajax jquery должна быть остановленатолько с временным интервалом 1 секунда.

Как это сделать.пожалуйста помогите спасибо Haan

Ответы [ 5 ]

3 голосов
/ 30 марта 2011

Звучит так, как будто вы выполняете обновление Ajax по таймеру, но при отправке формы вы хотите отменить обновление. Если это так, то при отправке формы вам нужно будет использовать clearInterval() для отмены таймера.

$('form').submit(function(){
    clearInterval(refreshId);
});

Или, возможно, вам удастся сделать это прямо в кнопке отправки, в зависимости от области действия refreshId.

<input onclick="clearInterval(refreshId);return(true);" type="submit" name="submit" value="Stop" id="submit" />
1 голос
/ 30 марта 2011

Как насчет проверки, является ли некоторая переменная истинной, перед тем, как приступить к работе с ajax.

Javascript:

      <script type="text/javascript">
      function stopWorking()
      {
            running = false;
      }
        $(document).ready(function() 
        {
            running = true;
            var refreshId = setInterval(function() {
               if(running!=false)
               {
                  jQuery("#results").load('random.php?randval='+ Math.random()+'&hours='+jQuery'#hours').val()+'&mins='+jQuery('#mins').val()+'&seconds='+jQuery('#seconds').val());
                  jQuery("#time_spent").val(jQuery("#results").html());

               }, 1000);
        });
      </script>

HTML:

<input type="submit" onclick="stopWorking();return(false);" />

После нажатия кнопки отправки переменная 'running' устанавливается в значение false, и все действия jquery прекращаются.

1 голос
/ 30 марта 2011

Если вы хотите запретить обновление #result после отправки формы, вам следует использовать обратный вызов из запроса get и проверить, нужно ли обновлять #result до помещения в него результата ajax.

var refreshId = -1;
jQuery(document).ready(function() {
  var stop = false;
  refreshId = setInterval(function() {
      var data = {
        randval: Math.random(),
        hours: jQuery('#hours').val(),
        mins: jQuery('#mins').val(),
        seconds: jQuery('#seconds').val()
      };

     jQuery.get('random.php', data, function(data){
       if (!stop) {
        jQuery("#results").html(data);
        jQuery("#time_spent").val(data);
       };
     });

  }, 1000);

  jQuery('form').submit(function(){
    stop = true;
    clearInterval(refreshId);
  });

});

0 голосов
/ 30 марта 2011

Вам необходимо использовать другой метод ajax - например, $ .get или $ .post и т. Д., Поскольку эти методы возвращают объект XMLHttpRequest, который можно сохранить в переменной и позднее использовать для прерывания запроса.

см .: Прервать Ajax-запросы, используя jQuery

0 голосов
/ 30 марта 2011

Я получу дикий удар в темноте от того, что вы просите. Так что, если запрос ajax занимает больше 1 секунды, он должен быть уничтожен?

Попробуйте установить время ожидания с помощью функции jQuery $.ajax() .

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