Php 在提交时停止ajax jquery加载

Php 在提交时停止ajax jquery加载,php,jquery,ajax,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前任

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" />

现在,如果单击submit按钮,ajax jquery加载应该立即停止,因为时间间隔为1秒

怎么做。请帮忙 谢谢
哈恩

我要在黑暗中疯狂地试探你的要求。那么,如果ajax请求花费的时间超过1秒,它应该被终止吗


尝试使用jQuery设置超时。

这听起来像是在计时器上进行Ajax刷新,但在提交表单时,您希望取消刷新。如果是这种情况,那么在提交表单时,您需要使用
clearInterval()
来取消计时器

$('form').submit(function(){
    clearInterval(refreshId);
});
或者,根据
refreshId
的范围,您也可以在“提交”按钮中正确执行此操作

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

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

请参阅:

如果要防止在提交表单后更新#结果,应使用get请求的回调,并在将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);
  });

}))

在做一些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>

函数stopWorking()
{
运行=错误;
}
$(文档).ready(函数()
{
运行=真;
var refreshId=setInterval(函数(){
如果(正在运行!=错误)
{
jQuery(“#results”).load('random.php?randval='+Math.random()+'&hours='+jQuery'#hours').val()+'&mins='+jQuery('#mins').val()+'&seconds='+jQuery('#seconds').val());
jQuery(“#time_persed”).val(jQuery(#results”).html();
}, 1000);
});
HTML:



单击submit按钮后,变量“running”被设置为false,所有jquery操作都停止。

Hi,您可以在每行的开头放四个空格来格式化源代码(可以使用编辑器顶部的
{}
按钮完成)--这一次我帮你做了;;有关格式化的更多信息,请参阅查看您的示例和问题,我认为您肯定对OP的要求有了更好的理解。这是一个很难理解的问题。请投票!@decipher:非常感谢。效果很好。但是收到这样的警告。“refreshId未定义”-如何解决此问题。
$。load()
还将
XMLHttpRequest
传递到回调函数中。非常感谢。这也非常有效。但会收到类似这样的警告。“未定义refreshId”如何解决这个问题,我忘了考虑范围。这是因为<代码>刷新代码变量不存在于 CurrSealTebug(PrimHID)<代码>的范围内。将刷新ID定义移到 jQuery(文档)之外。Read(函数({)})< /Cord>范围应修复此。参见上面的更改
<input type="submit" onclick="stopWorking();return(false);" />