当前位置: 首页 > 知识库问答 >
问题:

通过ajax设置和清除间隔

孙承弼
2023-03-14

我只想在进行ajax调用时清除上一个间隔并设置一个新的间隔。

当前代码为:

$("#title-form").change(function () {
    var title = $(this).val().trim();
    $.ajax({
        url: '/ajax/timing_check/',
        type: "get",
        data: {
        'title': title
        },
        dataType: 'json',
        success: function (data) {
            var interval = null;
            if(data.count_down){
            var _second = 1000;
            var _minute = _second * 60;
            var timer;
            var end = data.count_down
            mins = Math.floor(end / 60);
            secs = end % 60;

            var interval = setInterval(count,1000)
            function count(){
               console.log(parseInt(secs)) 
               secs -= 1

            }}
            else{
                var stop = function(){
                clearInterval(interval);}     
            }
        }
    })
})

我尝试了许多推荐的变化,以便能够从函数外部清除间隔。如;

将"间隔"变量设置为null或false,

窗设定间隔,

在setInterval中写入计数函数,

将count函数作为ajax函数之外的单独函数编写,

但这两种变化都没有消除间隔。

稍后,我还需要清除键入的间隔。

共有2个答案

方鸿羲
2023-03-14

在对MarshalSHI的回答进行了几次修改后,代码最终是这样的:

$("#title-form").change(function () {
    var title = $(this).val().trim();
    $.ajax({
        url: '/ajax/timing_check/',
        type: "get",
        data: { 'title': title },
        dataType: 'json',
        success: function (data) {
            deal_data(data);
        }
    })
})

var interval = null;

function deal_data(data) {
    if(interval == null && data.count_down){
        var end = data.count_down
        secs = end % 60;

        interval = setInterval(count, 1000);}
    else if (interval != null) {
        clearInterval(interval);
        interval = null;
    }
}

function count() {
    console.log(secs);
    secs -= 1;
}
祁正浩
2023-03-14

从你的代码中,我会像下面这样做(P. S.没有测试):

var interval = null,
    secs = 0;
function count() {
    console.log(secs);
    secs -= 1;
}
function deal_data(data) {
    if(interval == null && data.count_down){
        var end = data.count_down
        secs = end % 60;

        interval = setInterval(count, 1000);
    else if (interval != null) {
        clearInterval(interval);
    }
}


$("#title-form").change(function () {
    var title = $(this).val().trim();
    $.ajax({
        url: '/ajax/timing_check/',
        type: "get",
        data: { 'title': title },
        dataType: 'json',
        success: function (data) {
            deal_data(data);
        }
    })
})
 类似资料:
  • 我正在尝试开发一个滑块,如果用户没有点击后退或前进按钮,它每5秒就会改变一次。 但是如果他(用户)这样做了,间隔会触发多次。。。为什么? 我将间隔保存在一个变量中,并清除该变量,因此我不知道为什么这不起作用。。。但是看看你自己: }); 感谢阅读;-)

  • 我在for循环中有一个set interval函数,当它在set interval函数中时,如果它满足条件,就会发出警报并清除间隔。下面是我的代码,但它不工作。谁能告诉我这里的错误是什么。 谢谢 我试图解决的是:当本地时间与定时器数组中的时间匹配时,我需要每次获得警报(第0列;定时器[计数][0])。数组已经排序

  • 我有两个函数,递增速度和递减速度。它们都使用clearInterval()然后使用setInterval,但是有些地方不正确。 降低速度将我的速度从1000降到5000,但是如果我使用该功能,速度将增加10-20倍,看起来更像是100-500毫秒。另外,如果我使用increaseSpeed将速度提高到50毫秒,然后使用decreaseSpeed,decreaseSpeed将不会有任何效果。 这是设

  • 问题内容: 我已经尝试过了,但它不起作用。那么如何通过jQuery重置表单? 问题答案: 是DOM元素方法(jQuery对象上没有),因此您需要: 还是没有jQuery:

  • 问题内容: 我们希望在生产部署中缓存崩溃,但不要浪费大量时间来弄清楚这样做的系统。我的想法是将具有当前版本号的paras应用于css和js文件的末尾: 两个问题:这会有效地打破缓存吗?由于参数表明这是动态内容,因此该参数会导致浏览器从不缓存该URL的响应吗? 问题答案: 参数表示查询字符串,因此浏览器将认为这是从到的新路径。因此导致它从文件而不是从缓存加载。如你所愿。 而且,浏览器将假定下次调用时

  • 问题内容: 尝试实施ajax登录/注册过程(不带身份验证的刷新站点)。使用Cookie来保存状态。我以为我现在就拥有此功能,但是由于某种原因,浏览器在从服务器取回cookie后仍未设置cookie。有人可以帮忙吗?这是请求和响应头: 请求标题 响应标题 我还在服务器返回的Chrome网络工具中看到了cookie: 响应Cookie 问题答案: 必须通过将“ withCredentials”设置设置