断断续续的ajax错误无法察觉?

时间:2012-01-23 20:48:40

标签: javascript ajax

每次我点击我的网络应用程序上的按钮,我都没有得到回应。 “按钮”启动ajax调用。我的猜测是网络流量很大......而且它超时或类似。服务器的ajax响应是否有最长等待时间?有没有办法记录这种行为。这是我的ajax代码。

 var Ajax = {
    createAjaxObject: function()
    {
        var request;
        try
        {
            request = new XMLHttpRequest();
        }
        catch(error)
        {
            try 
            {
                request = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(error)
            {
                try
                {
                    request = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(error)
                {
                    request = false;
                }
            }
        }
        return request;
    },

    useAjaxObject: function( path, param, ajax_func, html_div )
    {
        var object = new Ajax.createAjaxObject();
        object.open( "POST", path, true );
        object.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
        object.setRequestHeader( "Content-length", param.length );
        object.setRequestHeader( "Connection", "close" );
        object.onreadystatechange = function()
        {
            if( this.readyState === 4 )
            {
                if( this.status === 200 )
                {
                    ajax_func( this.responseText, html_div );
                }
                else
                {
                    Ajax.repeatUseAjaxObject( path, param, ajax_func, html_div );
                    return false;
                }
            }
        };
        object.send( param );
        return true;
    },
    repeatUseAjaxObject: function( path, param, ajax_func, html_div )
    {
        var state = false,
            count = 1;
        while(state === false && count <= 5)
        {
            state = Ajax.useAjaxObject( path, param, ajax_func, html_div );
            if( count !== 1 )
            {
                alert( 'Ajax Object Use Failed ');
            }
        count++;
        }
    }

2 个答案:

答案 0 :(得分:2)

有时响应可能是错误的预期类型,或者服务器返回错误状态代码/页面而不是实际请求的信息。检查完整响应(或者确实存在缺少响应)的好方法是使用良好的HTTP流量代理调试器,例如:

的Fiddler http://fiddler2.com/fiddler2/(免费)

或查尔斯 http://www.charlesproxy.com/

他们将为您提供有关每个Web请求生命周期的完整信息。就最小或最大时间而言,服务器通常具有任何给定请求的超时设置。

客户端网站超时:来自jQuery Api ......不确定,因为你自己推出了自己的网站。

设置请求的超时(以毫秒为单位)。这将覆盖使用$ .ajaxSetup()设置的任何全局超时。超时时间从$ .ajax调用点开始;如果其他几个请求正在进行且浏览器没有可用的连接,则请求可能会在发送之前超时。

答案 1 :(得分:1)

您可能希望查看log4javascript哪个“是基于Java日志框架的JavaScript日志框架”。

AjaxAppender可专门用于发送日志消息。

正如FlavorScape指出的那样,您的服务器也应该具有服务器请求超时的设置。