php echo在将strtotime函数分配给javascript变量时不适用于该函数

php echo在将strtotime函数分配给javascript变量时不适用于该函数,php,jquery,Php,Jquery,这个很好用 <html> <head> <script src="jquery.js"></script> <script> $(document).ready(function(){ var timeLeft = <?php echo '1279'; ?>; $("#time").text(timeLeft); }); </script> <

这个很好用

<html>
<head>
<script src="jquery.js"></script>
<script>
    $(document).ready(function(){       
    var timeLeft = <?php echo '1279'; ?>;       

    $("#time").text(timeLeft); 
    });
</script>
</head>

<body>
    <div id="time"></div>
</body>
</html>

$(文档).ready(函数(){
var timeLeft=;
$(“#时间”).text(timeLeft);
});
但事实并非如此

<script>
    $(document).ready(function(){       
         var timeLeft = <?php echo strtotime("now"); ?>;       
         $("#time").text(timeLeft); 
    });
</script>

$(文档).ready(函数(){
var timeLeft=;
$(“#时间”).text(timeLeft);
});
它给出错误未捕获SyntaxError:意外标记<。 这是一个php扩展文件。

请尝试以下操作:

<script>
$(document).ready(function(){       
     var timeLeft = '<?php echo strtotime("now"); ?>';       
     $("#time").text(timeLeft); 
});
</script>

$(文档).ready(函数(){
var timeLeft=“”;
$(“#时间”).text(timeLeft);
});

在javascript中直接使用php非常危险。因为timetostr可能会输出一些关于时区等的警告,您的代码将在没有任何视觉线索的情况下被破坏

在我的项目中,如果我必须在javascript中使用任何php输出,我会创建隐藏的div并从javascript访问值:

<div class='hidden' id='values'>
<div class='val-time'><?php echo strtotime("now"); ?></div>
</div>

<script>
    $(document).ready(function(){       
         var timeLeft = $("#values .val-time").html();       
         $("#time").text(timeLeft);
    });
</script>

$(文档).ready(函数(){
var timeLeft=$(“#values.val time”).html();
$(“#时间”).text(timeLeft);
});

因此,每当您想调试代码时,只需从#值中删除“隐藏”类,然后查看哪些值是由PHP输出的。

查看生成的源代码,查看PHP输出的内容。@MrCode,语法错误不是致命的,并在错误所在的行终止代码吗,防止您看到语法错误的HTML行中输出的错误以外的任何内容?@crypticツ 如果出现语法错误或其他致命错误,通过查看源代码,您将看到打开PHP标记之前的所有内容。根据配置的不同,您还可以看到打印在那里的错误消息。@MrCode是的,这就是我问的意思=o) 它发出警告var timeLeft='
警告:strotime()[]:依赖系统的时区设置是不安全的。您需要使用date.timezone设置或date\u default\u timezone\u set()函数。如果您使用了这些方法中的任何一种,但仍然收到此警告,则很可能是您拼错了时区标识符。我们在第6行的C:\xampp\htdocs\phpjquery\index.php中选择了“亚洲/加尔各答”作为“5.5/no DST”
strotime()
输出一个时间戳(整数),所以没有理由引用它,对吗$(document).ready(function(){var timeLeft='';$(“#time”).html(timeLeft);})@Sandy,这并不能解释为什么示例1有效,但示例2无效。因为两者都输出一个整数,并且该整数被传递到
text()
。那么,两者都不应该导致它出错吗?