XMLHttpRequest требует более 2 минут, чтобы попасть на сервер - PullRequest
1 голос
/ 14 мая 2011

Я сталкиваюсь со специфической проблемой при использовании 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 минут, чтобы попасть на метод page_load страницы Status.aspx. Но как только происходит первый вызов, он выполняет вызов каждую секунду, как того требуют коды. Проблема для первого звонка. Кто-нибудь может сказать мне, в чем проблема? У меня действительно проблемы с этим вопросом

С уважением, Mohin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...