5
回答
急,ajax循环请求
华为云实践训练营,热门技术免费实践!>>>   

是这样的,我要每隔几秒请求一次数据库,查询是否那个值已变动,那个值的变动是不确定时间的

所以要总是进行AJAX请求,直到获得结果为止,求高手给一段简单,可靠,稳定的代码

<无标签>
举报
俊尚
发帖于5年前 5回/515阅

以下是问题补充:

共有5个答案 最后回答: 5年前
var timer = setInterval(function(){
    $.post(url,{},function(data,textState){
        if(data.flg){
            clearInterval(timer);
        }
    },"json");
},1000);
recive: function () {
    var me = this;
    $ajax({
        type: 'post', dataType: 'json', url: 'Level2Check.aspx', data: 'model=check&cardNumber=43030219881109xxxx',
        beforeSend: function () { $$("btnReadCard").disabled = true; },
        success: function (da) {
            if (da != null && da.result != 0) {
                alert("字段值已改变");
            }
             me.recieve(); },
        complete: function () { $$("btnReadCard").disabled = false; },
        timeout: 1000 * 5,
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            if (textStatus == "timeout") { alert("认证超时\n可能由于网络繁忙,请重试"); } 
        }
    });
}
//自已乱写了一个,求帮忙

引用来自“高得顺”的答案

看OSC主页代码啊...
$.jheartbeat = {
        options: {delay: 10000},
        beatfunction:  function(){},
        timeoutobj:  {id: -1},

        set: function(options, onbeatfunction) {
            if (this.timeoutobj.id > -1) {
                clearTimeout(this.timeoutobj);
            }
            if (options) {
                $.extend(this.options, options);
            }
            if (onbeatfunction) {
                this.beatfunction = onbeatfunction;
            }

            this.timeoutobj.id = setTimeout("$.jheartbeat.beat();", this.options.delay);
        },

        beat: function() {
            this.timeoutobj.id = setTimeout("$.jheartbeat.beat();", this.options.delay);
            this.beatfunction();
        }
    };

调用方法:

    function timer(func, interval){
        $.jheartbeat.set({delay: interval}, func);
    }
    timer(auto_save, 5000);

--- 共有 1 条评论 ---
俊尚谢谢,我研究下 5年前 回复
顶部