0

javascript代码有一些问题,当我尝试将php字符串传递给它时,它是一个用于计数的日期计时器,如果我给出静态值,它就可以工作,但如果我有一个php字符串,它只会给出零。

<?php $r="June 7, 2087 15:03:25"; ?>
       <script type="text/javascript">
      $(function() {
        var endDate = "<?php echo $r;?>";

        $('.countdown.simple').countdown({ date: endDate });
      });
    </script>

你可以在这里检查代码:http: //jsbin.com/EboVeCO/1/edit,如果你评论$r并把日期准确地放在JS中,它会起作用,否则不起作用:(

怎么了?为什么它不工作?

更新:

<?php foreach ($row as $r){
$rr = $r->release_date;
$rrr = date("F d, Y H:i:s", strtotime($rr));

<script type="text/javascript">
      $(function() {
        var endDate = "<? echo $rrr; ?>";

        $('.countdown.simple').countdown({ date: endDate });
      });
    </script>
echo ' <div class="countdown simple"></div>';
}

$row来自:

public function get_things() {
    $q = $this->db->query("SELECT * from s_data");
    if($q->num_rows() > 0){
    foreach($q->result() as $row){
    $data[] = $row;
    }
    return $data;
    }
    }

致敬!

4

3 回答 3

2

您的代码有语法错误,意外的 ';' 在第 4 行。echo需要它可以自行打印的东西,它是非法的。

于 2013-09-09T22:34:58.370 回答
1

我认为您<?php echo ;?>没有回显任何内容,因此endDate只是一个空字符串,这可能会导致countdown().

如果您只是将 endDate 更改为有效日期,则可以正常工作。

var endDate = "June 7, 2087 15:03:25";

所以,问题出在你的echo. 我会试试这个:

<?php echo $r;?>
于 2013-09-09T22:36:10.127 回答
0

在编写 js 之前,您不会退出 php。此外,您需要在<?部件中声明 php,否则它可能会被解释为其他内容,例如 xml。它应该更接近于:

<?php $i = 0; foreach ($row as $r){
$rrr = date("F d, Y H:i:s", strtotime($r->release_date));
// try print_r($rrr) here to see if your date is actually a valid string
?>
<script type="text/javascript">
      $(function() {
        var endDate = "<?php echo $rrr; ?>";

        $('#counter<?php echo $i; ?>').countdown({ date: endDate });
      });
    </script>
<div id="counter<?php echo $i; ?>" class="countdown simple"></div>
<?php
$i ++; }
?>

尽管在一个正确编写的示例中,js 可能不会在循环中编写。您可以在单独的文件中处理 js,并且可以将日期设置为倒计时简单元素中的数据属性。

此外,如果没有结果,您的 fetch 函数不会返回任何内容。因此,您可能希望将整个块置于仅在填充 $row 时触发的条件中。

编辑:

尝试重新组织这个...

<?php foreach ($row as $r){
    $rrr = date("F d, Y H:i:s", strtotime($r->release_date));
    ?>
    <div class="countdown simple" data-date="<?php echo $rrr; ?>"></div>
<?php
    }
?>

<script type="text/javascript">
   $(function() {
      $('.countdown.simple').each(function(){
          var endDate = this.data('date');
          this.countdown({date: endDate});
      });
   });
</script>
于 2013-09-09T23:05:18.417 回答