【发布时间】:2009-12-18 00:10:32
【问题描述】:
我学习 PHP、jQuery 和 AJAX 大约有一周的时间,而且我很快就学会了。我正在建立一个带有评论系统的新视频网站,我需要一些帮助。该站点显示了一个视频缩略图列表,当用户单击缩略图时,jquery 会自动更改该页面上的 html 以显示正确的视频:
$(".thumbnailcontainer img").click(function() {
var yt_vid = $(this).attr("id");
$("#youtube").fadeOut(300, function() {
//$("#content").append('<img src="img/design/icons/loading.gif" alt="Currently Loading" id="loading" class="loading" />');
$("#youtube").replaceWith('<object id="youtube" type="application/x-shockwave-flash" style="width:640px; height:385px; display:none;" data="http://www.youtube.com/v/' + yt_vid + '&hl=en_US&fs=1&hd=1"><param name="movie" value="http://www.youtube.com/v/' + yt_vid + '&hl=en_US&fs=1&hd=1" /><param wmode="transparent"><\/param><\/object>');
/*$("#loading").fadeOut(500, function() {
$(this).remove();
});*/
$('#youtube').fadeIn(1000);
});
(我暂时注释掉了加载图标,因为我正在尝试弄清楚如何将其显示在 youtube 视频的顶部,而不是被推到它下面......如果你能回答这个问题,给你加分。 )
无论如何,根据显示的视频,我需要与该视频关联的 cmets 显示在下方。我希望 cmets 也能动态更改 onclick,所以我创建了以下代码:
//Send POST data to PHP script to switch to correct comments
//Select Thumbnail's second parent's ID attr on click
var commentsID = $(this).parents("div:eq(1)").attr("id");
$.ajax({
url: 'php/comments.inc.php',
type: 'POST',
data: 'commentsID=' + commentsID,
success: function(html) {
$('#comments').html(html);
$("#db").attr("value", '' + commentsID + '');
}
});
});
这实质上是从缩略图的 id 属性中获取 MySQL 表名称,将其发布到返回正确 cmets 的脚本,并设置一个隐藏的表单值,该值将告诉表单将 cmets 发布到哪个表。
为了确定最近添加的视频并返回正确的 cmets,我的想法是发送一个 ajax 帖子,其中包含文档加载时的第一个缩略图的表格标识符,并附加返回的 cmets 并设置隐藏值通过 ajax。
我的问题是-上述做法是一个坏主意吗?也就是说,对我来说,发出这么多post请求来切换到正确的cmets似乎效率低下——这不是资源密集型的吗?另外,让我的数据库表名在缩略图的 id 属性中很容易看到以便我的脚本告诉我要连接到哪个数据库是否安全?
感谢您一路走来的所有帮助和任何建议。这是我在这里的第一篇文章,它似乎是一个非常有用的网站。
【问题讨论】:
-
Dave,当你说表名
commentsID是字符串,而不是 ID 时? -
是的,变量名有点误导。该变量实际上是设置为表名,然后发布到脚本告诉它要查看哪个表。将表名公开是否安全?