PHP表达式中的PHP输出

时间:2011-11-28 14:29:05

标签: php javascript html

请考虑以下方案,其中包含一个简单的HTML文档和一个JavaScript:

<!-- doc.html -->
<!doctype html>
<html lang="en">
    <head>        
        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script type="text/javascript" src="script.js"></script>
    </head>
</html>

// script.js
window.onload = function()
{
    var d = new Date();
    d.setHours(<?php echo(date("H")); ?>);
}

这真的很简单,不是吗? 但是,虽然这个coode完美地用于获取当前小时(将作为INT返回),但如果我尝试接收更复杂的日期/时间格式,则不会如下所示:

var serverTime = <?php echo date("Y-m-d H:i:s"); ?>;

这应编码为1900-01-01 00:00:00。所以,因为这不是一个法律表达式,我想用引号封装结果:

var serverTime = "<?php echo date("Y-m-d H:i:s"); ?>";

乍一看这应该有效。不幸的是,事实并非如此。 serverTime只包含一个空字符串。

我做错了什么?

6 个答案:

答案 0 :(得分:2)

也许你的时区没有正确设置

尝试

<?
    date_default_timezone_set('America/Los_Angeles');
?>

或类似的 - 完整列表可以在这里找到

http://de3.php.net/manual/en/timezones.php

答案 1 :(得分:0)

没有原因var serverTime = "<?php echo date("Y-m-d H:i:s"); ?>";不应该返回类似的内容:

var serverTime = "2011-05-12 05:12:56";

检查以确保echo date("Y-m-d H:i:s");正常工作。

除此之外,代码应该可以正常工作

见这里:http://codepad.org/3CNx1ch9
输出:http://codepad.org/3CNx1ch9#output

答案 2 :(得分:0)

javascript将不会执行您的PHP代码。 可以这样想: 当页面呈现时,php“用PHP代码的输出替换你的php代码。”

所以基本上这个

var serverTime = '<?php echo date("Y-m-d H:i:s"); ?>';

应呈现为

var serverTime = '2011-11-28 xx:xx:xx';

答案 3 :(得分:0)

我认为你插入参数的方式是错误的。根据{{​​3}}我认为你应该这样做:

// script.js
window.onload = function()
{
    var d = new Date('<?php echo(date("F d, Y H:i:s")); ?>');
    d.setHours(<?php echo(date("H")); ?>, <?php echo(date("i")); ?>, <?php echo(date("s")); ?>);    
}

语句var d = new Date('<?php echo(date("F d, Y H:i:s")); ?>');将遵循this

的示例

因为我无法理解为什么php无法发送date()函数的结果。

答案 4 :(得分:-1)

尝试使用单引号:

var serverTime = '<?php echo date("Y-m-d H:i:s"); ?>';

答案 5 :(得分:-1)

因为您在JavaScript中使用双引号,所以需要在php中使用单引号。

var serverTime = "<?php echo date('Y-m-d H:i:s'); ?>";