4

我有一个这样的 JSP 页面:

<html><body>
<div id="mainContainer">
    <div id="firstDisplayStuff">...</div>
    <% out.flush(); %>
    <div id="slowStuff">
        <mytaglib:abc name='SlowBoat'>...</mytaglib>
    </div>
</div>
<div id="floatRightContainer>
    <div id="endingDisplayStuff">...</div>
<div>
</body></html>

当它到达 taglib 时,它需要很长时间,而且这种延迟是无法避免的。

所以使用out.flush();我至少可以显示firstDisplayStuff,但是当 taglib 的东西运行时,用户只是坐在那里看半页。只有在完成之后,用户才能看到endingDisplayStuff.

我想要firstDisplayStuffendingDisplayStuff立即显示。

但我认为使用 jQuery,有一种方法可以<div id="slowStuff">留空,然后再加载。

<div id="slowStuff">在两个显示内容 div 都显示之后,jQuery 代码会是什么样子?我应该把代码放在哪里?它将如何被调用?

编辑:添加<div id=mainContainer><div id=floatRightContainer>现有示例中。

4

2 回答 2

5

在 DOM 上准备一个普通的 Ajax 请求,并用呈现的 HTML 填充 div:

$(function() {
  $("#slowStuff").load(theUrl, etc.)
});

请参阅load文档

向(JSP、动作、控制器等)发出请求,该请求呈现带有自定义标记的 JSP。

于 2012-06-04T17:48:48.247 回答
5

为此,您不需要 JavaScript。只需将最后一个 div 放在慢速 div 之前,然后使用 CSS 在屏幕上按照适合您的方式排列 div:

<html><body>
<div id="firstDisplayStuff">...</div>
<div id="endingDisplayStuff">...</div>

<% out.flush(); %>
<div id="slowStuff" style="display: none;">
    <mytaglib:abc name='SlowBoat'>...</mytaglib>
</div>
</body></html>

您可以使用几行代码,从 body onload 调用,将慢速 div 放到它所属的位置,然后显示它。 $('#slowStuff').insertAfter('#someDiv')把它放在正确的地方,并$('#slowStuff').show();让它展示出来。

于 2012-06-04T17:50:13.603 回答