Jquery 使用Ajax加载更多div内容
假设我有一个包含大量嵌入视频的页面,每个页面的标题和描述都包含在自己的div中。我只想在页面加载时加载4个div,然后有一个加载更多按钮,每次单击都会加载4个。除非我安装了这个功能,否则将会有很多视频会让页面速度变慢。我知道如何通过使用jQuery来伪造它,但这对页面加载没有帮助 无论如何,我都不是Ajax专家,所以我只是希望在这里被推向正确的方向。我不需要从数据库或任何东西加载。我只是从头开始构建页面。我是否将额外的div存储在另一个页面中,然后每次单击按钮都从那里加载/附加+4个divJquery 使用Ajax加载更多div内容,jquery,ajax,Jquery,Ajax,假设我有一个包含大量嵌入视频的页面,每个页面的标题和描述都包含在自己的div中。我只想在页面加载时加载4个div,然后有一个加载更多按钮,每次单击都会加载4个。除非我安装了这个功能,否则将会有很多视频会让页面速度变慢。我知道如何通过使用jQuery来伪造它,但这对页面加载没有帮助 无论如何,我都不是Ajax专家,所以我只是希望在这里被推向正确的方向。我不需要从数据库或任何东西加载。我只是从头开始构建页面。我是否将额外的div存储在另一个页面中,然后每次单击按钮都从那里加载/附加+4个div 谢谢
谢谢 您可以将视频源的链接存储在JS数组中(加载的是页面), 但是,一次只构建4个视频(每次单击按钮或滚动到页面末尾时) 例如,如果在页面中放置一个“加载”按钮,当单击时,您的函数将使用适当的内容再创建4个潜水,并动态地将它们添加到DOM中。 您只需创建一些静态计数器,以记住尚未显示的视频的索引 这不会像视频那样影响页面加载时间(因为源仅为文本) 编辑: 如果您的视频源存储在某种DB中,也可以执行相同的操作, 您只需记住当前位置,每次只获取少量数据 看看这个简单的例子
var videoSources=新数组(“Src1”、“Src2”、“Src3”、“Src4”、“Src5”、“Src6”、“Src7”、“Src8”、“Src9”、“Src10”、“Src11”、“Src12”、“Src13”、“Src14”、“Src15”、“Src16”);
var指数=0;
函数加载()
{
if(index==videoSources.length)
返回;
var newElement='';
对于(变量i=0;i<4;i++)
新元素+=''+视频源[索引++]+'';
新元素+='';
$(新元素).appendTo($('#Container');
};
您可以将视频源的链接存储在一个JS数组中(与页面一起加载),
但是,一次只构建4个视频(每次单击按钮或滚动到页面末尾时)
例如,如果在页面中放置一个“加载”按钮,当单击时,您的函数将使用适当的内容再创建4个潜水,并动态地将它们添加到DOM中。
您只需创建一些静态计数器,以记住尚未显示的视频的索引
这不会像视频那样影响页面加载时间(因为源仅为文本)
编辑:
如果您的视频源存储在某种DB中,也可以执行相同的操作,
您只需记住当前位置,每次只获取少量数据
看看这个简单的例子
var videoSources=新数组(“Src1”、“Src2”、“Src3”、“Src4”、“Src5”、“Src6”、“Src7”、“Src8”、“Src9”、“Src10”、“Src11”、“Src12”、“Src13”、“Src14”、“Src15”、“Src16”);
var指数=0;
函数加载()
{
if(index==videoSources.length)
返回;
var newElement='';
对于(变量i=0;i<4;i++)
新元素+=''+视频源[索引++]+'';
新元素+='';
$(新元素).appendTo($('#Container');
};
让我们一步一步来。显然,您有一个包含一些视频的文件夹,也有一个数据库,可能是mysql,您在其中存储了这些视频的路径
首先,在页面中使用服务器端语言(如php)加载前4个视频,以防止在页面加载后再使用ajax请求1个视频
因为您使用的是jquery,所以可以使用以下代码
/*JS*/
var totalVideos = 4;
function getImages(){
var request = $.ajax({
url: "getVideos.php",
type: "POST",
data: { last : totalVideos },
dataType: "json"
});
request.done(function( videos ) {
renderVideos(videos);
totalVideos += 4;
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
}
function renderVideos(vids){
var html = '';
for (var i = vids.length - 1; i >= 0; i--) {
var video = // Create the video html code here based on your needs.
html += video;
}
$('#yourVideoContainer').append(html);
}
$(document).ready(function(){
$('#moreVideos').click(function(){
getImages();
})
})
/*PHP*/
if (isset($_POST['last']) && is_numeric($_POST['last'])) {
getVideos(intval($_POST['last']);
}
function getVideos(last) {
global $db; // This is your database conection object assuming it is global.
$query = 'SELECT * FROM videos LIMIT 4 OFFSET :last ORDER BY videos.id DESC';
if ($statement = $db->prepare($query)) {
$statement->bindParam(':last', last);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
if(count($result) > 0){
header('Content-Type: application/json');
echo json_encode($result);
return;
}
}
header("HTTP/1.0 666 Someone stole your vids");
}
如果您不想使用数据库和服务器端语言
您可以在项目中使用一个简单的JS或JSON文件,其中
视频信息将被存储。然后只需通过javascript和
访问视频阵列或对象
例如,在json文件的情况下,可以执行以下操作:
$.getJSON("videos.json", function(json) {
console.log(json); // this will show the info it in firebug console
});
让我们一步一步来。显然,你有一个包含一些视频的文件夹,还有一个数据库,可能是mysql,你在那里存储了这些视频的路径 首先,在页面中使用服务器端语言(如php)加载前4个视频,以防止在页面加载后再使用ajax请求1个视频 因为您使用的是jquery,所以可以使用以下代码 /*JS*/
var totalVideos = 4;
function getImages(){
var request = $.ajax({
url: "getVideos.php",
type: "POST",
data: { last : totalVideos },
dataType: "json"
});
request.done(function( videos ) {
renderVideos(videos);
totalVideos += 4;
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
}
function renderVideos(vids){
var html = '';
for (var i = vids.length - 1; i >= 0; i--) {
var video = // Create the video html code here based on your needs.
html += video;
}
$('#yourVideoContainer').append(html);
}
$(document).ready(function(){
$('#moreVideos').click(function(){
getImages();
})
})
/*PHP*/
if (isset($_POST['last']) && is_numeric($_POST['last'])) {
getVideos(intval($_POST['last']);
}
function getVideos(last) {
global $db; // This is your database conection object assuming it is global.
$query = 'SELECT * FROM videos LIMIT 4 OFFSET :last ORDER BY videos.id DESC';
if ($statement = $db->prepare($query)) {
$statement->bindParam(':last', last);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
if(count($result) > 0){
header('Content-Type: application/json');
echo json_encode($result);
return;
}
}
header("HTTP/1.0 666 Someone stole your vids");
}
如果您不想使用数据库和服务器端语言
您可以在项目中使用一个简单的JS或JSON文件,其中
视频信息将被存储。然后只需通过javascript和
访问视频阵列或对象
例如,在json文件的情况下,可以执行以下操作:
$.getJSON("videos.json", function(json) {
console.log(json); // this will show the info it in firebug console
});
看一看@LaurentWartel有用如果你想覆盖一个div的内容,在这种情况下你仍然需要使用它。你有那些存储在db中的视频路径吗?看一看@LaurentWartel有用如果你想覆盖一个div的内容,在这种情况下,您仍然需要使用它。您是否将这些视频路径存储在db中?根据他/她的需要,这非常完美。它是相当静态的,每次他/她添加新视频时都需要更改源代码,但这不应该是一个太大的负担?我只是把所有附加的div放在一个js文件中,然后每次单击都将其附加到页面上?不。你把所有链接放在同一个文件中,放在一个js数组中。单击,您可以构造新的DOM元素并动态地将它们添加到页面中。根据他/她的需要,这非常完美。它是相当静态的,每次他/她添加新视频时都需要更改源代码,但这不应该是一个太大的负担?我只是把所有附加的div放到一个js文件中,然后每次点击都把它附加到页面上?不,你把al