这是我的第一篇文章,我并不是真正的开发人员(更像是一个热心的修补匠)。
我正在尝试根据从 MySQL 数据库中获取的信息在网站上创建一些旋转文本(可见项目每 10 秒左右用 JQuery 切换一次)。
目前,我在页面加载完成后应用旋转 JQuery 函数之前直接从 MySQL 结果创建 HTML。我遇到的问题是,预先创建/呈现 HTML 会减慢页面加载时间,而其他元素会在创建的 HTML 后面进行备份。
即使在加载文档之前没有运行 Javascript 也会发生这种情况(我也知道数据库查询需要几毫秒。)我已经通过强制查询返回 1 行、10 行、所有行来隔离问题等注意到每次更改都会导致页面加载时间变慢。
呈现的 HTML 看起来像这样:
<div id="container">
<div class="item">
<span class="field1">row 1 field 1</span>
<span class="field2">row 1 field 2</span>
</div>
<div class="item">
<span class="field1">row 2 field 1</span>
<span class="field2">row 2 field 2</span>
</div>
<div class="item">
<span class="field1">row 3 field 1</span>
<span class="field2">row 3 field 2</span>
</div>
...
</div>
我的解决方案(对替代建议感到高兴)是先渲染第一行,然后在页面加载后创建其余的行(旋转有 10 秒的延迟,这应该是足够的时间)。
这样做的另一个好处是,在 JQuery 元素开始旋转过程之前,附加内容不会使我的页面变得一团糟(我可以解决这个问题,但是两只鸟,一块石头等)
我在这个论坛上找到了一个从 MySQL 数据创建 JSON 数组的帖子:
<?php
$result=mysql_query("SELECT * FROM my_table");
$my_result_array=array();
while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
array_push($my_result_array,$row);
}
$json_array = json_encode($my_result_array);
?>
在这一点上,我现在卡住了。我在这个论坛上找到了一些更有用的输入,用于在加载后创建必要的 HTML 对象:
var t = $.template('<div class="item"><span class="field1">${field1}</span><span class="field2">${field2}</span></div>');
$(selector).append( t , {
dataPart1: jsonObj.field1,
dataPart2: jsonObj.field2
});
我不清楚的一点(我对 Javascript 和 JSON 知之甚少)是我如何从我在 PHP 中创建的数组文本到最后一部分,它有一个可以迭代的对象。
非常感谢所有建议!