如何在setInterval函数中动态地将变量传递给PHP脚本调用?

时间:2015-05-13 17:56:55

标签: javascript jquery

我这里有一个脚本,应该将php脚本输出加载到指定的' div'在设定的时间间隔内,并能够通过发送来自两个选择'的值来应用过滤器。列表到该脚本。 我已经在Stack上的另一个主题上得到了一些帮助,它已经在$(document).ready()事件中列出了它。但后来我有$(" #status_filter")。change()和$("#car_filter")。change()事件。他们应该首先停止refreshId间隔函数,然后更改我应该发送到PHP脚本的变量,使用更改的变量重新加载内容并再次启动refreshId循环。因此,我使循环使用零值,但浏览器不会对从列表中选择选项做出反应。我已经玩了一段时间的代码部分,但无济于事。如果可以,请帮助我。

var status_filter = 0;
var car_filter = 0;

$("#status_filter").change(function() {
    clearInterval(refreshId);
    status_filter = $(this).val();
    $("#content").load("get_orders.php?status=" + status_filter + "&car=" + car_filter);
    var refreshId = setInterval(function() {
        $("#content").load("get_orders.php?status=" + status_filter + "&car=" + car_filter);
    }, 30000);
});

$("#car_filter").change(function() (
    clearInterval(refreshId);
    car_filter = $(this).val();
    $("#content").load("get_orders.php?status=" + status_filter + "&car=" + car_filter);
    var refreshId = setInterval(function() {
        $("#content").load("get_orders.php?status=" + status_filter + "&car=" + car_filter);
    }, 30000);
});

$(document).ready(function() {
    $("#filterBar").load("get_filters.php");
    $("#content").load("get_orders.php?status=" + status_filter + "&car=" + car_filter);
    var refreshId = setInterval(function() {
        $("#content").load("get_orders.php?status=" + status_filter + "&car=" + car_filter);
    }, 30000);
});

我将这个脚本放在页面头部' head'标签。我还没有检查过将所有脚本放在一个单独的文件中并链接它可能会有所帮助。我也担心,在页面关闭或浏览器关闭之前,相信js保持它的变量是有效的。

1 个答案:

答案 0 :(得分:0)

你试过setTimeout()吗?您可以使用此功能创建一个简单的循环功能。下面的代码将每秒打印一个数字,然后再次调用自己。



$(function() {
  var counter = 0;
  var loop = function() {
    setTimeout(function() {
      $('body').append(++counter);
      loop();
    }, 1000);
  }
  loop();
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

这可以为您量身定制一个循环函数:

function loop(status, car) {
//Check Values of status and car, set defaults otherwise.
    setTimeout(function() {
        $("#content").load("get_orders.php?status=" + status + "&car=" + car);
          loop();
    }, 1000);
}