繁体   English   中英

每天使用JavaScript包含不同的php文件

[英]Include every day a different php file with javascript

我想每天展示不同的内容。 只是纯文本或php echo工作正常,但是当我尝试包括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; } –*

您的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文件更加困难。

如果您已经在使用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();

我猜你的包含PHP文件生成"将与JavaScript的地干扰"界定的字符串。 您当然需要对那些"使用\\"进行转义

以便:

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

变成

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM