请教 asp 每隔一段时间 执行一个处理代码 问题

时间:2021-07-30 15:54:56

function doAjax() {
    $.ajax( {
        url : "/ajax/Bath_do.asp",
        dataType : "html",
        cache:false ,     //cache 
        type : "get", 
        async:false,   // 
        error : function(msg) {
            alert("error.");
           
        },
        success : function(text) { 
            document.getElementById("pt").innerHTML =  text;
          
        }
    });
    
    setTimeout("doAjax()", 50000); //
    return false;
}




Bath_do.asp 页面是远程访问某页面读取数据  比如 http:// www.baidu.com/read.asp     然后判断是新数据就存入数据库的操作

async:false,  这个属性是后加的,  之前没有这个属性 这时候运行流畅 可偶尔会重复存入数据 应该是延迟 或者 丢包等问题吧。 所以就加上 async:false,  作为同步

可这时候问题出现了。  卡的要死。  然后动不动就出error   不知道有没有别的办法能做到这个功能  每隔一段时间做一次操作。  现在问题就是台卡了。浏览器好像假死 还有执行了几次以后就不行了。  好像卡死。 请各位高手指点。

5 个解决方案

#1


你在上一次请求完毕后在执行就好了。。


    function doAjax() {
        $.ajax({
            url: "/ajax/Bath_do.asp",
            dataType: "html",
            cache: false, 
            type: "get",
            async: true,//还是异步的
            error: function (msg) {
                alert("error.");
                doAjax()//////////////////////
            },
            success: function (text) {
                document.getElementById("pt").innerHTML = text;
                doAjax()//////////////////////
            }
        });

        return false;
    }

#2


回复 1楼 : 
这样的话  服务器受不了吧? 这像是死循环 不停地访问。   得在 success 里加个 定时器 在执行 doAjax?

#3


引用 2 楼 qq_16493041 的回复:
回复 1楼 : 
这样的话  服务器受不了吧? 这像是死循环 不停地访问。   得在 success 里加个 定时器 在执行 doAjax?


如果是多个人会用这个功能服务器时有点受不了。。用setTImeout延时执行下就好了

    function doAjax() {
        $.ajax({
            url: "/ajax/Bath_do.asp",
            dataType: "html",
            cache: false, 
            type: "get",
            async: true,//还是异步的
            error: function (msg) {
                alert("error.");
               setTimeout(doAjax, 50000); ////////////////////////
            },
            success: function (text) {
                document.getElementById("pt").innerHTML = text;
               setTimeout(doAjax, 50000); ////////////////////////
            }
        });
 
        return false;
    }

#4


注意ajax操作时都需要先禁用原按钮,待ajax有返回结果后再启用按钮,防止重复提交。至于async建议异步执行体验较好,同步会造成浏览器假死现象。

#5



function doAjax() {
    $.ajax( {
        url : "/ajax/Bath_do.asp",
        dataType : "html",
        cache:false , 
        type : "get", 
        error : function(msg) {
            alert("error.");   //失败后停止循环插入数据
        },
        success : function(text) { 
            document.getElementById("pt").innerHTML =  text;
            setTimeout(function(){
                 doAjax();
            }, 5000); //  成功插入数据5秒后再次插入
        }
    });
}

#1


你在上一次请求完毕后在执行就好了。。


    function doAjax() {
        $.ajax({
            url: "/ajax/Bath_do.asp",
            dataType: "html",
            cache: false, 
            type: "get",
            async: true,//还是异步的
            error: function (msg) {
                alert("error.");
                doAjax()//////////////////////
            },
            success: function (text) {
                document.getElementById("pt").innerHTML = text;
                doAjax()//////////////////////
            }
        });

        return false;
    }

#2


回复 1楼 : 
这样的话  服务器受不了吧? 这像是死循环 不停地访问。   得在 success 里加个 定时器 在执行 doAjax?

#3


引用 2 楼 qq_16493041 的回复:
回复 1楼 : 
这样的话  服务器受不了吧? 这像是死循环 不停地访问。   得在 success 里加个 定时器 在执行 doAjax?


如果是多个人会用这个功能服务器时有点受不了。。用setTImeout延时执行下就好了

    function doAjax() {
        $.ajax({
            url: "/ajax/Bath_do.asp",
            dataType: "html",
            cache: false, 
            type: "get",
            async: true,//还是异步的
            error: function (msg) {
                alert("error.");
               setTimeout(doAjax, 50000); ////////////////////////
            },
            success: function (text) {
                document.getElementById("pt").innerHTML = text;
               setTimeout(doAjax, 50000); ////////////////////////
            }
        });
 
        return false;
    }

#4


注意ajax操作时都需要先禁用原按钮,待ajax有返回结果后再启用按钮,防止重复提交。至于async建议异步执行体验较好,同步会造成浏览器假死现象。

#5



function doAjax() {
    $.ajax( {
        url : "/ajax/Bath_do.asp",
        dataType : "html",
        cache:false , 
        type : "get", 
        error : function(msg) {
            alert("error.");   //失败后停止循环插入数据
        },
        success : function(text) { 
            document.getElementById("pt").innerHTML =  text;
            setTimeout(function(){
                 doAjax();
            }, 5000); //  成功插入数据5秒后再次插入
        }
    });
}