怎么得到没有AJAX调用正在等待加载?

时间:2013-11-29 07:09:50

标签: jquery ajax google-chrome

我正在编写一个应该测试任何网站的自动化测试程序。

我想点击文档的某个元素,但在此之前我想验证没有任何AJAX调用正在运行。

我只会有文档,而不是任何AJAX调用URL或类似内容。

有没有办法让我可以在文档上验证没有执行任何AJAX请求。

我该怎么做?

4 个答案:

答案 0 :(得分:1)

简单回答:你不能。 HTTP是无状态的,浏览器无法知道是否已发送请求以及我们是否仍在等待回复。

唯一能够知道的是应用程序本身,使用应用程序逻辑。在等待AJAX​​回复时设置变量,添加到列表,增加计数器......然后可以“监视”变量。

我担心我不知道实现这一目标的优雅方式。在方法中封装所有AJAX调用并使用该方法可能会起作用 - 您可以在上线时禁用测试代码。

答案 1 :(得分:1)

jQuery有几个AJAX event handlers。如果您在ajaxIsExecuting上将ajaxStart设置为true并在ajaxStop上将其设置为false,那么您应该知道AJAX是否正在执行。

答案 2 :(得分:0)

也许你不需要javascript?所以你可以使用这种代码;

 javascript:void(d=document);if(frames.length){alert('Script doesnt work in frame');}else
    {while((el=d.getElementsByTagName('script')).length
        {el[0].parentNode.removeChild(el[0]);};onerror=function(){};d.close();}

答案 3 :(得分:0)

您可以使用以下技术:

var loadingarray=[];

function GetCommand(id, sid) {
    if (loadingarray[id]) {return false;}
    loadingarray[id] =  true;
        getCommandResponse = $.ajax({
//send id to server
         ....
         ....
        });

}

function AjaxFinishedGet(xml, status) {
//retrieve id from server in xml
    loadingarray[id] = false;
    ...
    ...
}

然后你可以简单地检查loadingarray是否具有真正的价值。如果有;一些用id运行的ajax调用。如果它还没有知道运行中没有任何ajax进程。