Jquery 使用Ajax加载更多div内容

Jquery 使用Ajax加载更多div内容,jquery,ajax,Jquery,Ajax,假设我有一个包含大量嵌入视频的页面,每个页面的标题和描述都包含在自己的div中。我只想在页面加载时加载4个div,然后有一个加载更多按钮,每次单击都会加载4个。除非我安装了这个功能,否则将会有很多视频会让页面速度变慢。我知道如何通过使用jQuery来伪造它,但这对页面加载没有帮助 无论如何,我都不是Ajax专家,所以我只是希望在这里被推向正确的方向。我不需要从数据库或任何东西加载。我只是从头开始构建页面。我是否将额外的div存储在另一个页面中,然后每次单击按钮都从那里加载/附加+4个div 谢谢

假设我有一个包含大量嵌入视频的页面,每个页面的标题和描述都包含在自己的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