Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AJAX在加载大型HTML页面时从大型HTML页面获取数据_Java_Javascript_Ajax_Jsp_Birt - Fatal编程技术网

Java AJAX在加载大型HTML页面时从大型HTML页面获取数据

Java AJAX在加载大型HTML页面时从大型HTML页面获取数据,java,javascript,ajax,jsp,birt,Java,Javascript,Ajax,Jsp,Birt,不完全确定这是否有一个名称,但基本上我有一个很大的HTML页面,它是由数据库中的结果生成的 因此,在浏览器中直接查看HTML页面(它是一个报告)并不会立即显示所有内容,而是显示它所拥有的内容,并在检索数据库的结果时添加额外的HTML 有没有一种方法可以向这个HTML页面发出AJAX请求,而不是等到整个页面(报告)准备好,我可以在加载HTML报告时开始处理响应?还是有别的方法 Atm我做了我的AJAX响应,它只是在那里停留一两分钟,直到HTML页面完成 如果上下文有用:HTML报告由Javaser

不完全确定这是否有一个名称,但基本上我有一个很大的HTML页面,它是由数据库中的结果生成的

因此,在浏览器中直接查看HTML页面(它是一个报告)并不会立即显示所有内容,而是显示它所拥有的内容,并在检索数据库的结果时添加额外的HTML

有没有一种方法可以向这个HTML页面发出AJAX请求,而不是等到整个页面(报告)准备好,我可以在加载HTML报告时开始处理响应?还是有别的方法

Atm我做了我的AJAX响应,它只是在那里停留一两分钟,直到HTML页面完成

如果上下文有用:HTML报告由Javaservlet生成,进行AJAX调用的页面是JSP页面。不幸的是,我不能很容易地分解报告,因为它是由BIRT(eclipsereportingextension)生成的


提前感谢。

是的,如果有人感兴趣,请访问:

client.open("GET", reportUrl, true);
client.onreadystatechange = responseListener;
client.send();

var reportContents = document.getElementById("reportContents");
// Since this could considerably slow browsers for large reports,
// don't edit report contents for every readystate equal to 3.
// Do it every 10.
var batchUpdate = 10;
var responsesSinceUpdate = 0;
// Don't update the whole contents, just add the new stuff
// since the last update.
var currentLengthOfReportHtml = 0;
// Have max recommended length of report before showing warning.
var maxRecommendedReportLength = 500000;

function responseListener()
{
    if (this.status == 200)
    {
        var readyState = this.readyState;

        if (readyState == 3 || readyState == 4)
        {
            var updatePage = false;

            if (readyState == 4)
            {
                updatePage = true;
                var loadingDiv = document.getElementById("reportLoading");
                loadingDiv.innerHTML = "";
                toggleLargeReportWarning(false);
            }
            else
            {
                responsesSinceUpdate++;

                if (responsesSinceUpdate > batchUpdate)
                {
                    updatePage = true;
                    responsesSinceUpdate = 0;
                }
            }

            if (updatePage)
            {
                var reportLength = this.responseText.length;
                reportContents.innerHTML += this.responseText.substring(currentLengthOfReportHtml);
                currentLengthOfReportHtml = reportLength;

                if (reportLength > maxRecommendedReportLength && readyState == 3)
                {
                    toggleLargeReportWarning(true);
                }
            }
        }
    }
}

是的,如果有人感兴趣,一切都可以:

client.open("GET", reportUrl, true);
client.onreadystatechange = responseListener;
client.send();

var reportContents = document.getElementById("reportContents");
// Since this could considerably slow browsers for large reports,
// don't edit report contents for every readystate equal to 3.
// Do it every 10.
var batchUpdate = 10;
var responsesSinceUpdate = 0;
// Don't update the whole contents, just add the new stuff
// since the last update.
var currentLengthOfReportHtml = 0;
// Have max recommended length of report before showing warning.
var maxRecommendedReportLength = 500000;

function responseListener()
{
    if (this.status == 200)
    {
        var readyState = this.readyState;

        if (readyState == 3 || readyState == 4)
        {
            var updatePage = false;

            if (readyState == 4)
            {
                updatePage = true;
                var loadingDiv = document.getElementById("reportLoading");
                loadingDiv.innerHTML = "";
                toggleLargeReportWarning(false);
            }
            else
            {
                responsesSinceUpdate++;

                if (responsesSinceUpdate > batchUpdate)
                {
                    updatePage = true;
                    responsesSinceUpdate = 0;
                }
            }

            if (updatePage)
            {
                var reportLength = this.responseText.length;
                reportContents.innerHTML += this.responseText.substring(currentLengthOfReportHtml);
                currentLengthOfReportHtml = reportLength;

                if (reportLength > maxRecommendedReportLength && readyState == 3)
                {
                    toggleLargeReportWarning(true);
                }
            }
        }
    }
}

如果你不能把报告分成几部分,那就需要技巧了。我想我已经做到了……我正在使用jQuery进行AJAX调用。编写自己的onreadystatechange侦听器并检查值为3的readystates似乎可以让我访问响应对象的[Complete]responseText!!一旦我进一步调查,我会发回的。如果你不能把报告分成几部分,那会很棘手。我想我已经知道了……我正在使用jQuery进行AJAX调用。编写自己的onreadystatechange侦听器并检查值为3的readystates似乎可以让我访问响应对象的[Complete]responseText!!我进一步调查后会发回的。