如何中断循环javascript?

时间:2017-05-12 18:53:35

标签: javascript php jquery

我有一个任务是制作显示服务器时间(ajax)的网页,并可以选择增加/减少小时数。它将是php + js。 我做了下一个js:

$(document).ready(function() {

function update() {
  $.ajax({
   type: 'POST',
   url: 'clocks.php',
   timeout: 1000,
   success: function(data) {
      $("#clock_place").html(data); 
      window.setTimeout(update, 1000);
   }
  });
 }

 update();
});

下一个php脚本:

<?php

$TIME = date('d/m/Y h:i:s');
switch($_POST["increment"]){
    case "-":
        $TIME=strtotime("-1 hour", strtotime($TIME));
        echo date('d/m/Y h:i:s', $TIME);
        break;
    case "+":
        $TIME=strtotime("+1 hour", strtotime($TIME));
        echo date('d/m/Y h:i:s', $TIME);
        break;
    default:
        echo $TIME;
}
?>

现在我想听按钮&#34; +&#34;和&#34; - &#34;像这样onclick:

$("#send1").click(function(){
  var param = {
    increment: $("#send1").val(),
  }
  $.post("clocks.php", param);
});

$("#send2").click(function(){
  var param = {
    increment: $("#send2").val(),
  }
  $.post("clocks.php", param);
});

我该怎么做?我试过了,但我想我不能打断那些更新时间的js。 任何建议!

1 个答案:

答案 0 :(得分:0)

你需要使用某种记忆,我建议localStorage or sessionStoragesessionStorage更有可能达到你的目的)。将增量/减量存储到一个变量(可以将hoursCounter,你继续被称为增量)调用到sessionStorage并将其发送到ajax。重要的部分是向AJAX发送增值的价值,并将价值存入JS或隐藏HTML

试试:

$(document).ready(function() {

function update() {
  $.ajax({
   type: 'POST',
   url: 'clocks.php',
   data: {
     increment: sessionStorage.getItem('increment')
   },
   timeout: 1000,
   success: function(data) {
      $("#clock_place").html(data); 
      window.setTimeout(update, 1000);
   }
  });
 }

 update();
});

//Your routine it's so fast that don't need to trigger when click, just wait the next call from timeout routine!
$("#send1, #send2").click(function(){
  sessionStorage.setItem('increment', $(this).val());
});