Ajax调用返回任务状态? (正在进行中或已完成)

时间:2012-10-27 10:50:32

标签: jquery ajax loading

我有一个包含任务的html表,最后一列称为“status”。我需要做一件简单的事情,用动画gif图标的常用方法跟踪每个任务的状态,如果它正在进行中,或者检查它是否完成。

我过去通过调用带有$ .ajax的php脚本来完成此操作,它每1分钟刷新一次。该脚本是一个PHP脚本,其中一个查询检查了一个布尔列。这种方法还可以,但即便如此,我知道这很可能是做这种事情的最愚蠢的方法。

我正在寻找一种更强大的方法来做到这一点,当我在搜索时,我找到了这个片段

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({ cache: false }); // This part addresses an IE bug.  without it, IE will only load the first number and will never refresh
setInterval(function() {
$('#divToRefresh').load('/path/to/your/php/file/userCount.php');
}, 3000); // the "3000" here refers to the time to refresh the div.  it is in milliseconds.
});
</script>

这样的东西可以工作,但如果任务实际完成,如何停止刷新?像“Gaurav Sharma”这样的回答post是要走的路?

我是Jquery的新手,所以我真的很想知道你会怎样做这样的事情,这似乎是一项常见的任务,所以我犹豫是通过编写2页代码重新发明轮子来完成一些事情。 5行: - )

2 个答案:

答案 0 :(得分:0)

var interval = setInterval(function() {
    $('#divToRefresh').load('/path/to/your/php/file/userCount.php');
    if(somecondition){
        clearInterval(interval);
    }
}, 3000); // the "3000" here refers to the time to refresh the div.  it is in milliseconds.

调用clearInterval(interval)会停止重复。

答案 1 :(得分:0)

你应该实现一些这样的代码

var interval = null; // has to be global in this example

// [...] your code

interval = setInterval(function(...));

// [...] your code

如果您的脚本完成,只需从任何地方拨打clearInterval(interval)