如果结果包含键,如何停止ajax计时器

时间:2016-08-19 15:47:32

标签: javascript jquery ajax

我有一个简单的ajax函数:

<script type="text/javascript"
src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
    function crunchifyAjax() {
        $.ajax({
            url: '/user/show-user-task-messages?code=<c:out value="${liveCode}"/>',
            success: function (data) {
                $('#result').html(data);
            }
        });
    }
</script>
<script type="text/javascript">
    var intervalId = 0;
    intervalId = setInterval(crunchifyAjax, 100);
</script>

该函数检查每100ms我的网址并返回一些文字:

10
9
8
7
6
5
4
3
2
1
stop

我想在data包含停止后打破此计时器。我怎么能这样做?

非常感谢这方面的任何帮助。

3 个答案:

答案 0 :(得分:0)

试试这个:

<script type="text/javascript"
src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
    function crunchifyAjax() {
        $.ajax({
            url: '/user/show-user-task-messages?code=<c:out value="${liveCode}"/>',
            success: function (data) {
                $('#result').html(data);
                if((""+data).indexOf("stop") > -1)
                    clearInterval(intervalId); //clearing the interval started by setInterval
            }
        });
    }
</script>
<script type="text/javascript">
    var intervalId = 0;
    intervalId = setInterval(crunchifyAjax, 100);
</script>

答案 1 :(得分:0)

假设您的服务器返回一个项目数组,如

["1","2","4","stop","6"]  

您可以检查回来的数组,看看它是否有“stop”项,如果是,则调用clearInterval方法。

success: function (data) {
          $('#result').html(data);
          var subset = data.filter(function (a) {
                    return a === "stop";
          });
          if (subset.length > 0) {
                    window.clearInterval(intervalId);
         }
}

如果您的服务器返回类似"1,3,5,stop,6"的字符串,您可以使用indexOf方法检查特定字符串是否存在

success: function(data) {
           $('#result').html(data);
           if (data.indexOf("stop") > -1) {
                window.clearInterval(intervalId);
           }

如果您要返回一组项目,我强烈建议您返回一个数组而不是连接字符串。

答案 2 :(得分:0)

只是举个例子,查看'NA'的内容 - 如果它符合您的条件(在您的情况下持有“停止”) - &gt; data

虚拟代码:

clearInterval()