当我在其中传递php字符串时,Javascript正在破碎,为什么?

时间:2013-09-09 22:32:12

标签: php

有一些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;
    }
    }

萨吕!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我认为您的<?php echo ;?>没有回应任何内容,因此endDate只是一个空字符串,可能会导致countdown()出现问题。

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

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

所以,问题在于你的echo。我试试这个:

<?php echo $r;?>

答案 2 :(得分: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,并且日期可以设置为倒计时简单元素中的数据属性。

此外,如果没有结果,您的提取功能不会返回任何内容。因此,您可能希望将整个块放在一个条件中,只有在填充$ 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>