繁体   English   中英

在提交时停止ajax jquery加载

[英]stop ajax jquery load on submit

我有一个这样的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" />

现在,如果单击提交按钮,则由于时间间隔为1秒,因此应立即停止ajax jQuery加载。

怎么做 。 请帮助谢谢哈恩

听起来您正在按计时器进行Ajax刷新,但是提交表单后,您想取消刷新。 在这种情况下,提交表单时,您将需要使用clearInterval()取消计时器。

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

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

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

如果要防止在提交表单后更新#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);
  });

});

在做一些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动作均停止。

我要在黑暗中刺破你的要求。 因此,如果ajax请求花费的时间超过1秒,则应将其杀死?

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

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

请参阅: 使用jQuery中止Ajax请求

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM