在获得响应之前计算ajax调用时间

时间:2011-01-11 11:09:58

标签: php ajax facebook

我已经完成了一个使用php和ajax的facebook应用程序来获取有关朋友的统计信息并找到最佳匹配。该应用程序正在使用选项卡并且工作正常,但有时当我单击一个选项卡发送ajax请求并加载图标显示我没有得到任何回复并且加载图标一直显示。有没有办法可以计算ajax调用的秒数,所以我会在x秒后将用户重定向到另一个html页面?

2 个答案:

答案 0 :(得分:1)

要实现您想要获得的内容,您可以调用(在X秒之后,使用setTimeout())一个函数,该函数检查是否已加载ajax响应。 例如:

var responseLoaded = false;    

function checkIt(){
    if(!responseLoaded)
        window.location = "%http://alternative-page%"; 
}

setTimeout(checkIt,10000) //after 10 seconds

responseLoaded可以是一个全局变量,可以在ajax响应结束时设置为true。 或者,您可以检查当时是否存在某些DOM元素或JS var(即由AJAX调用创建)(当通过setTimeout调用该函数时)

然后,您可以使用

Date.getTime()

获取当前时间戳。您可以将开头的时间戳与ajax响应末尾的时间戳进行比较,以查看所需的总时间。 (如果你想检查平均ajax加载时间)

答案 1 :(得分:1)

另一种选择是设置xmlhttprequest对象的timeout参数。在jQuery中,它是选项对象中的超时选项。

$.ajax ({
    timeout: 1000,
    success: successCallback,
    error: function (req, error, errorStatus) {
        if (error == 'timeout') {
            //send them to other page....
        }
    }
});

你可能想要放入更多的错误处理程序...同样,由于xmlhttpobject2具有超时函数回调,现在这个过程可能会更加简化......

也不要在语法上引用我。我是通过记忆在手机上写的......