[英]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.