【问题标题】:jQuer Slick slider data get from Ajax with setInterval every secondjQuery Slick 滑块数据每秒从 Ajax 获取 setInterval
【发布时间】:2017-11-08 07:19:24
【问题描述】:

我正在使用 jQuery slick 来滑动我的文本。参考:http://kenwheeler.github.io/slick/

现在我希望使用 jQuery Ajax Auto Refresh 每秒从数据库中动态获取数据,setInterval。

JS

setInterval(function()
    {
        $.ajax(
        {
            url: "test",
            type: "POST",
            data:
            {
            },
            dataType: "JSON",
            success: function (jsonStr)
            {
                $('.card').empty();
                for(var i=0; i<jsonStr.runningText.length; i++)
                {
                    $('.card').append(jsonStr.runningText[i]);
                }
            }
        });
    }, 1000);

test.php

$q = mysqli_query($con, "
SELECT * FROM tb_running_texts
");
while($dQ = mysqli_fetch_array($q))
{
    $runningText[] = $dQ['running_text'];
}

$data = array(
    "runningText"     => $runningText
);

echo json_encode($data);

和 JS 光滑

$('.lazy').slick({
      slidesToShow: 1,
      slidesToScroll: 1,
      autoplay: true,
      autoplaySpeed: 5000,
    });

HTML

<div class="lazy slider">
   <h1 class="card"></h1>
</div>

当前条件是所有数据都将直接显示。我想要的是数据将单独显示为幻灯片。

有可能吗?

【问题讨论】:

    标签: javascript php jquery ajax


    【解决方案1】:

    如果我理解你的话。您希望每秒只记录一条记录,但不一样。

    所以首先如果你想每次都采取不同的方式,那么你需要这样做:

        var offset = 0;
        setInterval(function()
        {
            $.ajax(
            {
                url: "test",
                type: "POST",
                data:
                {
                    offset: offset
                },
                dataType: "JSON",
                success: function (jsonStr)
                {
                    offset += 1;
    
                    $('.card').empty();
    
                    $('.card').append(jsonStr.runningText);
    
                }
            });
        }, 1000);
    

    然后是 PHP

    $offset = isset($_POST['offset']) ? $_POST['offset'] : 0;
    
    $q = mysqli_query($con, "
    SELECT * FROM tb_running_texts ORDER BY date_time DESC LIMIT 1 OFFSET $offset
    ");
    
    while($dQ = mysqli_fetch_array($q))
    {
        $runningText[] = $dQ['running_text'];
    }
    
    $data = array(
        "runningText"     => $runningText
    );
    
    echo json_encode($data);
    

    如果你想每次随机取,那么offset就不需要了,换行

    SELECT * FROM tb_running_texts ORDER BY date_time DESC LIMIT 1 OFFSET $offset 
    

    到

    SELECT * FROM tb_running_texts ORDER BY RAND() LIMIT 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多