当MySQL更改或添加新行时,如何在滑块jquery自动更新中获取div内容?
我已尝试使用我的代码,但我的滑块不起作用,无法滑动任何div内容。
我的代码:
的index.php
<html>
<head>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js">
</script>
<script type="text/javascript" src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript" src="slick.min.js"></script>
<link rel="stylesheet" type="text/css" href="slick.css" />
<link rel="stylesheet" type="text/css" href="slick-theme.css" />
<script type="text/javascript">
$(document).ready(function () {
$('.single-item').slick({
dots: false,
infinite: true,
speed: 700,
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
});
});
</script>
<script type="text/javascript">
$(document).ready(function () {
$.ajaxSetup({
cache: false
});
setInterval(function () {
$('.single-item').load('item.php');
}, 3000);
});
</script>
<style type="text/css">
body {
background-color: darkturquoise;
}
</style>
</head>
<div class="single-item" style="width: 500px; height: 500px; margin: auto;">
</div>
</html>
item.php
<?php
include 'connect.php';
$sql = mysql_query("SELECT * FROM fm_product WHERE p_pined = 'PINED'") or die(mysql_error());
while($result = mysql_fetch_array($sql)){
echo '<div style="background-color: white; height: 200px;">'.$result['p_id'].'</div>';
}
?>
我的代码给出了输出:
答案 0 :(得分:0)
我不确定这是否有资格作为一个完整的答案,但主要问题在于你使用.load
以及它与光滑的滑块插件的交互(或缺少它)。
您网页上的活动顺序如下:
.single-item
初始化。 .single-item
(当前没有)的内容被光滑的滑块HTML替换,以正确设置和渲染幻灯片,控制按钮等。
.single-item
现在充满了许多不同的HTML元素。如果你不确定它是什么样的,check the slick slider demo page - 查看页面源代码,然后使用开发人员工具查看源代码,看看它的外观变化。.single-item
原本从未有过任何内容,因此会呈现零幻灯片。此时,您已创建一个空滑块。setInterval
活动已注册。setInterval
事件首次触发。对item.php
进行了XHR,它使用HTML进行响应 - 一组包含数据的样式divs
。
item.php
正在返回正确的数据。single-item
的内容。
GOTO STEP4
正在发生的事情是你的.load
调用正在替换包含光滑滑块设置的元素的内容,完全打破了滑块。
您需要做的是改变处理AJAX的方式。您应该删除.load
并转向使用$.ajax
进行更好的回调控制。根据{{3}},你可以:
$('.single-item').slick('unslick');
销毁光滑的滑块,将内容插入.single-item
,然后重新初始化滑块。.slick('slickAdd', HtmlOrDomNode
)和.slick('slickRemove' slideIndex)
希望这有帮助。