0

我见过一些插件在滚动到页面底部时会加载更多内容,但其中大多数都链接到数据库中具有自动递增 ID 的列。我只需要使用 XML 文件来执行此操作。

有任何想法吗?

非常感激。

4

1 回答 1

0

xml 文件在服务器上,但我想它可以用 jQuery 解析?我可以使用 ajax 并解析整个 XML 文件,但这会破坏无限滚动/延迟加载?

如果您将 XML 发送到客户端,这导致浏览器解析它并构建一个 DOM。取决于它有多大(几千字节?兆字节?),这可能很快,也可能需要一段时间。默认情况下将所有 if 发送到浏览器也会占用您的带宽,是的,某种程度上违背了延迟加载的目的。

然而,无限滚动是一种 UI 范例,因此即使您总是将整个 XML 文件发送到浏览器,您也可以实现它。同样,这取决于您想要实现的目标 - 节省带宽或只是“即时”创建内容。

假设您将文件留在服务器上,因为它太大了:

  • 让服务器将其加载到线程安全 (!) DOM 对象中。不要在应用程序生命周期内销毁对象,通过存储在应用程序(或会话)中为每个请求重用它。事实上,这创建了“数据库”。
  • 构建一个访问 XML 并将其中的一部分返回给浏览器的代理页面。您可以使用 XPath 从 XML DOM 对象中检索请求的位。
  • 使用您最喜欢的无限滚动 jQuery 插件并调整代理页面以接受其请求参数。

来自无限滚动插件的假设请求可能看起来像

http://server.name/path/data.aspx?start=516&count=10

然后您的 data.aspx 将使用 XPath 查询从第 516 个元素中检索 10 个 XML 元素:

/root/data[position() >= 516 and position() < 516 + 10]

然后,您可以从中构造 HTML,或者将其作为原始 XML 发送,并通过客户端上的 jQuery 对其进行评估。

可能有量身定制的框架可以完成所有这些工作,但如果我要实现这样一个系统,上面的内容大致就是我会做的。

于 2011-02-22T16:06:47.927 回答