V tomto tutoriálu vám ukážu, jak můžete dynamicky načítat data na posouvání div pomocí php, mysql, jquery a ajax nebo můžete říci, že facebook jako stránkování, když se někdy uživatel dostane na konec div nebo stránky, budou nová data načteno okamžitě.
V tomto příkladu mám databázi zemí a potřebuji zobrazit seznam všech zemí v divu, takže když uživatel posouvá div země, načte se další seznam zemí.
Nejprve vytvořte databázi zemí.
CREATE TABLE IF NOT EXISTS `countries` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sortname` varchar(3) NOT NULL, `name` varchar(150) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=247 ; |
Vytvořte soubor php pro připojení k databázi a načtěte seznam zemí podle limitu.
<?php $hostname = "localhost"; $username = "root"; $password = "root"; $dbname = "location"; $limitStart = $_POST['limitStart']; $limitCount = 50; // Set how much data you have to fetch on each request if(isset($limitStart ) || !empty($limitStart)) { $con = mysqli_connect($hostname, $username, $password, $dbname); $query = "SELECT id, name FROM countries ORDER BY name limit $limitStart, $limitCount"; $result = mysqli_query($con, $query); $res = array(); while($resultSet = mysqli_fetch_assoc($result)) { $res[$resultSet['id']] = $resultSet['name']; } echo json_encode($res); } ?> |
Nyní vytvořte soubor html a vložte nějaké css a html
<style> .country { height: 300px; overflow: auto; width: 500px; } .loading { color: red; } li {font-size:24px;} #loading { display:none; color:red; font-size:30px; } </style> <div class="country"> <ul id="results"></ul> </div> <span id="loading">Loading Please wait...</span> |
Poté napište jquery pro odeslání požadavku na server na div scroll
<script> $(function() { loadResults(0); $('.country').scroll(function() { if($("#loading").css('display') == 'none') { if($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) { var limitStart = $("#results li").length; loadResults(limitStart); } } }); function loadResults(limitStart) { $("#loading").show(); $.ajax({ url: "request.php", type: "post", dataType: "json", data: { limitStart: limitStart }, success: function(data) { $.each(data, function(index, value) { $("#results").append("<li id='"+index+"'>"+value+"</li>"); }); $("#loading").hide(); } }); }; }); </script> |
Nyní bude váš konečný soubor index.html
index.html
<style> .country { height: 300px; overflow: auto; width: 500px; } .loading { color: red; } li {font-size:24px;} #loading { display:none; color:red; font-size:30px; } </style> <div class="country"> <ul id="results"></ul> </div> <span id="loading">Loading Please wait...</span> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script> $(function() { loadResults(0); $('.country').scroll(function() { if($("#loading").css('display') == 'none') { if($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) { var limitStart = $("#results li").length; loadResults(limitStart); } } }); function loadResults(limitStart) { $("#loading").show(); $.ajax({ url: "request.php", type: "post", dataType: "json", data: { limitStart: limitStart }, success: function(data) { $.each(data, function(index, value) { $("#results").append("<li id='"+index+"'>"+value+"</li>"); }); $("#loading").hide(); } }); }; }); </script> |
Podívejte se na živé demo a stáhněte si zdrojový kód.
DEMO | STÁHNOUT |