【问题标题】:AJAX/MySQL,JavaScript - database and countdownAJAX/MySQL,JavaScript - 数据库和倒计时
【发布时间】:2013-02-07 20:23:52
【问题描述】:

我正在通过 Ajax 显示数据库中的数据,我需要添加带有数据库时间的倒数计时器。是否有可能做到这一点,因为我正在努力解决它大约 24 小时。你可以在这里查看主代码http://www.egrupper.pl,你会看到倒数计时器不起作用。 AJAX 代码:

function showDeals(sid,limit,cat)
{
sid=typeof sid !== 'undefined' ? a : 1;
limit = typeof limit !== 'undefined' ? limit : 0.7;
if(sid=="" || limit==""){
    document.getElementById("con").innerHTML="";
    return;
}
if(window.XMLHttpRequest){
    xmlhttp=new XMLHttpRequest();
}else{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
    if(xmlhttp.readyState==4 && xmlhttp.status==200){
        document.getElementById("con").innerHTML=xmlhttp.responseText;
$('#con').masonry({
      itemSelector: '.clsDeal_Blk_Cont'
    });

    }
}
xmlhttp.open("GET","getdeals.php?sid="+sid+"&limit="+limit+"&cat="+cat,true);
xmlhttp.send();
}

在 getdeals.php 中我有如下所示的倒数计时器代码:

$(document).ready(function(){
            $("#countdown_<?php echo $id; ?>").countdown({
                date: "date_from_database",
                format: "on"
            },

            function() {
                // callback function
            });
        });

感谢@user2008945 的帮助,这对我很有用,但无论如何我需要在页面上设置多个倒数计时器,我虽然这样的事情会做,但不幸的是没有:

success:function(rows){

for (var i in rows){
var row=rows[i];
var id=row[0];
var end_date=row[1];
$("#countdown_"+id).countdown({
            date: end_date,
            format: "on"
        },

        function() {
            // callback function
        });
}
}

$data=array();
while($row=mysql_fetch_row($result))
{
    $data[]=$row;
}
die (json_encode($data));

【问题讨论】:

  • 为什么不用jquery ajax?
  • 因为我认为这是从数据库中获取数据而无需重新加载网站的最佳方式
  • 请查看此链接:api.jquery.com/jQuery.ajax
  • jQuery ajax 也不会刷新页面,它只是使用 ajax 的一种更简洁的形式,并且支持跨浏览器,就像你现在正在做的一样。
  • 另一种方法是使用套接字。阅读更多关于socket.io

标签: php javascript mysql ajax countdown


【解决方案1】:

除非您熟悉 jquery ajax,否则这段代码不会有太大帮助, 但是如果你决定使用 jquery ajax,那么你可以使用这个代码:

$(document).ready(function(){

$.ajax({
url:"getdeals.php?sid="+sid+"&limit="+limit+"&cat="+cat,
type:"GET",
dataType:'json',
success:function(data){

//data contains value like {countDownId:'someid',countDownDate:'somedate'},
//its in json format,
// in your getdeals.php write some thing like this 
// die (json_encode(array('countDownId'=>'someid','countDownDate'=>'somedate')));

$("#countdown_"+data.countDownId).countdown({
                date: data.countDownDate,
                format: "on"
            },

            function() {
                // callback function
            });

}
});

        });

【讨论】:

  • 感谢@user2008945 的帮助,这对我很有用,但无论如何我需要在页面上使用多个倒数计时器,但我认为如果我将数组与数据库中的结果一起放置并执行“for loop”它会有所帮助,但不幸的是没有。我已经编辑了我的问题以显示我做了什么。
  • 如果行看起来像这样:rows={0:{0:'someid',1:'somedate'},1:{0:'someid1',1:'somedate2'}} ,它应该工作。尝试使用 control.log 来查看“行”的结构。
  • 数据没问题,一个定时器在工作,问题是只有最后一个在倒计时,但其他的有一些时间,但他们没有倒计时,只是一直显示同时
猜你喜欢
  • 2021-08-25
  • 2013-01-22
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
  • 2015-12-02
  • 2014-01-22
相关资源
最近更新 更多