跟踪Ajax请求

时间:2010-08-07 04:53:09

标签: javascript jquery networking client

新手在这里..

我只想问我怎样才能在学校完成作业。 我基本上有这个需要。

我想每10秒发送一次ajax请求,但如果我之前的请求尚未返回,我不想发起另一个请求。

我认为与DB的连接有时可能会那么糟糕,所以我想在我启动另一个请求之前等待我之前的请求完成(成功/失败/错误)。

我查看了javascript并找到了setinterval方法。但是,如何排列我的ajax请求,以便服务器不被许多ajax请求激活?

我正在研究jquery,正在使用JSON。

3 个答案:

答案 0 :(得分:4)

一种方法是在发出请求时将变量设置为false。当你把它拿回来时,将它恢复为真。当您发送新的ajax请求时,请确保该值为true。如果没有将它添加到某种队列中,以便在请求完成时调用它。但是,如果每个请求都需要更长的时间,那么您的队列将得到相当多的备份。所以你可能不想要一个队列。所以当你去发送ajax请求时,如果变量是假的,你只需再等10秒钟。

答案 1 :(得分:1)

我甚至会帮助更多:

    var isWatingForResponse = false;

    $.ajax({
        url: 'wherever'
        ,dataType: 'json'
        ,beforeSend: function() {
            if(isWatingForResponse) {
                return false;
            }
            isWatingForResponse = true;
        }
        ,complete: function() {
            isWatingForResponse = false;
        }
        ,success: function (data) {
            //process data
        }
    });

或者关注@ qw3n回答。这应该适用于jQuery 1.4.2

答案 2 :(得分:0)

我看到OP问题:

如何使用jQuery Ajax在Db-server问题上在客户端设置容错?

这个恕我直言,是一个非常好的问题。 如果可以的话,我想绘制管道:

web-client->network->web-server->network->Db-server

Db-server->network->web-server->network->web-client

您在客户端中处理db-server问题的解决方案是可行的,但实际上并未解决实际问题。它可能会使您未来的客户扩展陷入瘫痪。

你应该尽可能地处理这个问题。在网络服务器中。