XMLHttpRequest需要2分钟以上才能命中服务器

时间:2011-05-14 16:30:31

标签: javascript xmlhttprequest

使用XMLHttpRequest时遇到了一个特殊的问题。方案是:我有一个加载报告的页面,有时加载报告并将其显示给浏览器需要30多分钟。在此期间,我想向客户提供进度反馈。所以,我已将报告页面放在另一个页面的IFrame中,当单击该按钮生成报告时,我调用window.parent.Status()然后返回true以使回发发生。这是window.parent.Status()的作用。

function Status() {
            LoadingPanel.Show();
            GetStatus();
        }

        function GetStatus() {
            var xmlHttp;
            try {
                // Firefox, Opera 8.0+, Safari
                xmlHttp = new XMLHttpRequest();
            }
            catch (e) {
                // Internet Explorer
                try {
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e) {
                    try {
                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {
                        alert("Your browser does not support AJAX!");
                        return false;
                    }
                }
            }

            xmlHttp.open("GET", "Status.aspx", true);
            xmlHttp.send();
            xmlHttp.onreadystatechange = function () {
                if (xmlHttp.readyState == 4) {
                    var msg = '';
                    var percentage = '';
                    if (xmlHttp.responseText == '') {
                        document.getElementById('dvStatus').innerHTML = 'Loading....';
                    }
                    else {
                        var resp = xmlHttp.responseText.split('$');
                        if (resp.length > 1) {
                            document.getElementById('dvStatus').innerHTML = resp[1];
                            if (resp[1] == 'Report layout built successfully') {
                                setTimeout('HideLoadingPanel()', 5000);
                            }
                            else {
                                setTimeout('GetStatus()', 1000);
                            }
                        }
                    }
                }
            }
        }

        function HideLoadingPanel() {
            LoadingPanel.Hide();
            document.getElementById('dvStatus').innerHTML = 'Loading....';            
        }  

请参阅XMLHTTPRequest调用Status.aspx页面并在页面加载方法中读取一些会话并将响应发送回如下:Response.Write(percentage + "$" + message + " : " + percentage + "%" + "$");

现在问题是:第一次使用XMLHttpRequest需要2分钟或超过2分钟才能点击Status.aspx页面的page_load方法。但是一旦第一次呼叫发生,它就会在代码要求它每秒进行一次呼叫。问题出在第一个电话上。是谁能告诉我这是什么问题? 我真的遇到了这个问题

此致 Mohin酒店

0 个答案:

没有答案