我大约需要一周时间学习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视频上显示它而不是在它下面按下...如果你能回答这个问题,那么你可以获得奖励积分。 )
无论如何,根据显示的视频,我需要在下面显示与该视频相关的评论。我希望评论也可以动态更改,所以我创建了这段代码:
//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表名,将其发布到返回正确注释的脚本,并设置一个隐藏的表单值,该值将告诉表单将表单发布到哪个表。
为了确定最近添加的视频并返回正确的评论,我的想法是将文档加载时带有第一个缩略图表标识符的ajax帖子发送到脚本并附加返回的注释并形成隐藏值集通过ajax。
我的问题是 - 上述做法是个坏主意吗?也就是说,对我来说,如此多的帖子请求切换到正确的评论似乎效率低下 - 这不是资源密集型的吗?另外,为了让我的脚本告诉哪个数据库要连接到我的脚本,我的数据库表名是否可以在我的缩略图的id属性中显而易见?
感谢您的所有帮助和一路上的任何建议。这是我在这里的第一篇文章,它看起来像一个非常有用的网站。
答案 0 :(得分:1)
由于其异步性质,在页面加载时单个或甚至几个ajax请求实际上可能会加快一点加载时间。人们在加载时发出一些ajax请求是相当普遍的,它是一种使页面加载感觉更快的技术。
但是,您可能会考虑返回更标准化的数据类型。如果您从json字符串中的注释发送回内容和元数据,您可以自己构建注释并保存大量传输(所有只是重复的html标记)。
多个网站采用的另一个技巧是将评论加载到视口区域。如果无法看到评论(如果它们低于折叠),则没有太多理由加载它们。然后当/如果用户向下滚动时,您可以在那时发出请求。
就flash视频的奖励积分而言,你需要查看一个名为的参数
wmode
并将其设置为transparent
。您也可以考虑使用标准化的swf注入工具(如swfobject(或它的jquery插件版本))将这些视频添加到页面中。
答案 1 :(得分:0)
您可能希望使用loading.gif
来加载评论。显示YouTube视频的脚本将立即运行,不会有任何延迟,因为它只是将HTML注入页面。视频的实际加载与您的网页无关。
至于loading.gif
按下视频,您需要在该图片上执行z {索引大于1的CSS position:absolute;
。这将从页面流中获取上下文的图像,并允许它覆盖视频。您可以使用顶部和左侧CSS属性居中定位图像。确保您的图片和视频是具有position:relative;
的容器。