在提交时停止ajax jquery加载

时间:2011-03-30 11:08:42

标签: php jquery ajax

我有一个像这样的jquery ..

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 个答案:

答案 0 :(得分:3)

听起来你正在对计时器进行Ajax刷新,但是当提交表单时,你想要取消刷新。如果是这种情况,则在提交表单时,您需要使用clearInterval()取消计时器。

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

或者您可以在提交按钮中完成此操作,具体取决于refreshId的范围。

<input onclick="clearInterval(refreshId);return(true);" type="submit" name="submit" value="Stop" id="submit" />

答案 1 :(得分:1)

如果要在提交表单后阻止更新#result,则应使用get请求中的回调,并检查是否应在将ajax结果放入其中之前更新#result。

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);
  });

});

答案 2 :(得分:1)

在做一些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操作都将停止。

答案 3 :(得分:0)

我将要求你在黑暗中狂奔。那么如果ajax请求需要超过1秒,它应该被杀死吗?

尝试使用jQuery的$.ajax() function设置超时。

答案 4 :(得分:0)

您需要使用不同的ajax方法 - 例如$ .get或$ .post等...因为这些方法返回一个XMLHttpRequest对象,该对象可以存储在变量中,稍后用于中止请求。

请参阅:Abort Ajax requests using jQuery