【发布时间】:2011-07-23 09:52:47
【问题描述】:
我正在尝试为许多带有章节的书籍制作“幻灯片”查看器。 “幻灯片”是存储在数据库中的 HTML 数据块。一章可以包含 50-100 张幻灯片,但它们非常小(每张 1-2 kB 和一些图片)。我希望用户有按钮来点击上一张和下一张幻灯片,并最大限度地减少加载时间。
我现在拥有的是一个名为 ContentFetcher.php 的 PHP 页面,它只查询数据库以获取一张幻灯片(部分)的内容。
<?php
require_once 'Database.php';
echo Database::getInstance()->getSectionText($_GET["bookID"], $_GET["chapter"], $_GET["section"]);
?>
我的 Javascript 运行一个循环并使用 $.get() 获取当前章节的每个部分:
$(function() {
<? $db = Database::getInstance(); ?>
var chapterSize = <?= $db->getChapterSize($this->bookID, $this->chapter) ?>;
var chapterContent = []; // this is where I want to store the contents
var currentSection = <?=$this->section;?>;
for (var i = 1; i <= chapterSize; i++) {
$.get("ContentFetcher.php", {
bookID : <?= $this->bookID ?>,
chapter : <?= $this->chapter ?>,
section : i
}, function(data) {
chapterContent.push(data);
});
}
$("#slides").html(chapterContent[currentSection]); // show the current slide
});
那么这在性能方面是个好主意吗?如果是这样,我对 JS 闭包的理解还不是很好——如何在闭包中访问相同的 chapterContent?
【问题讨论】: