每天用javascript包含不同的php文件

时间:2015-04-09 13:37:38

标签: javascript php html

我想每天都展示不同的内容。只是纯文本或PHP回声工作正常,但当我试图包含一个PHP文件或加载图像等我的脚本停止工作。

到目前为止我的代码:

<div id="box-wrapper"></div>

<script>
    function myFunction() {
        var d = new Date();
        var weekday = new Array(7);
        weekday[0] = "This is working well.";
        weekday[1] = "<?php echo 'This is also working well.' ?>";
        weekday[2] = "Tuesday";
        weekday[3] = "Wednesday";
        weekday[4] = "Thursday";
        weekday[5] = "Friday";
        weekday[6] = "Saturday";

        var n = weekday[d.getDay()];
        document.getElementById("box-wrapper").innerHTML = n;
    }
</script>

任何想法我怎么能意识到这一点?我们公司里没有人对这个主题有非常深入的了解,而我只是在实践中学习。

问候和感谢。

编辑:抱歉不清楚。例如,如果我在星期三包含一个文件,并且星期四的文件都显示,但是我的页面搞砸了,并且还显示了一些纯文本,如:

*"; weekday[5] = "Friday"; weekday[6] = "Saturday"; var n = weekday[d.getDay()]; document.getElementById("box-wrapper").innerHTML = n; } –*

3 个答案:

答案 0 :(得分:1)

您的PHP回音仅起作用,因为它与常规文本完全相同。

在浏览器甚至看到您的JavaScript之前,在服务器上处理PHP。所以这个:

weekday[1] = "<?php echo 'This is also working well.' ?>";

简单地说:

weekday[1] = "This is also working well.";

您的浏览器甚至不知道其中的差异。

当您尝试包含另一个文件时,该文件的内容也将输出到该JavaScript字符串中。您应该可以使用浏览器的“查看源”工具查看该内容。如果您向下滚动到JavaScript,您会看到类似这样的内容:

weekday[4] = "[file contents]";

该文件可能包含引号。当您的浏览器遇到字符串中的引号时,它会假定字符串已结束。它会使您的JavaScript无效。

你可能不应该使用JavaScript。相反,您应该使用PHP在服务器上执行所有这些操作。

例如,它可能如下所示:

$day = date('l'); // That gets the name of today.  http://php.net/date
switch ($day) {
    case 'Sunday':
        echo 'This is working well.';
        break;
    case 'Monday':
        echo 'This is also working well.';
        break;
    case 'Tuesday':
        echo 'Tuesday';
        break;
    case 'Wednesday':
        include 'filename.php';
        break;
    // etc.
}

这只是一种方法。您也可以像在JavaScript中一样使用数组,但这会使包含其他PHP文件变得更加困难。

答案 1 :(得分:1)

如果你已经在使用PHP,为什么要用JavaScript搞乱你的页面呢?

<?php
$day = getdate('wday');
$files = array(
    'days/sunday.php',
    'days/monday.php',
    'days/tuesday.php',
    'days/wednesday.php',
    'days/thursday.php',
    'days/friday.php',
    'days/saturday.php'
);
?>

<div><?php include $files[$day]; ?></div>

如果确实想要使用JavaScript,请使用AJAX。

var day = new Date().getDay(),
    req = new XMLHttpRequest();

req.open('GET', 'my-dynamic-file.php?day=' + day, true);
req.onload = function() {
    document.body.innerHTML = req.responseText;
};

req.send();

答案 2 :(得分:0)

我猜测你所包含的PHP文件会生成",这会干扰javascript "分隔字符串。 你当然需要使用"

来逃避\"

那样:

weekday[4] = "My string with "  a double quote";

变为

weekday[4] = "My string with \"  a double quote";