javascript - 如何根据条件调用javascript中的函数
问题描述
我正在尝试为婚礼活动发送自动生成的邮件,所以我有一个使用 java 脚本的倒数计时器,我想在一天前发送一个提醒。我尝试使用 php 和 java 脚本,但没有得到预期的输出。
使用 java 脚本尝试了下面的代码,但它没有在控制台上发送/显示我的消息
<!DOCTYPE html>
<html>
<p id="demo"></p>
<style>
p {
text-align: center;
color: #7FFF00;
font-size: 50px;
margin-top: 0px;
}
</style>
<script>
// Set the date we're counting down to
var countDownDate = new Date("April 3, 2019 10:30:01").getTime();
// Update the count down every 1 second
var x = setInterval(function() {
// Get todays date and time
var now = new Date().getTime();
// Find the distance between now and the count down date
var distance = countDownDate - now;
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Output the result in an element with id="demo"
document.getElementById("demo").innerHTML = days + "d " + hours + "h "
+ minutes + "m " + seconds + "s ";
// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = "Today is the wedding";
}
var myvar=20;
while(distance==myvar){
document.getElementById("demo").innerHTML = "Reminder";
<?php
//to send an wedding reminder
include "Sendmail.php"
?>
}
}, 1000);
</script>
</html>
因此,我尝试使用页面自动刷新选项在下面的 Php 中使用:但它没有像执行的那样工作-------------------------------------------- ------------------------------------------------
<!DOCTYPE html>
<html>
<body>
<?php
echo "Today is " . date("l");
//date_default_timezone_set('America/New_York');
//timezone_name_from_abbr('IHST',19800) for Asia/Colombo
//set the timezone for ist:
date_default_timezone_set('Asia/Kolkata');
$today = date("Y-m-d H:i:s");
$date = "2019-02-26 07:43:16 ";
$tilldate = "2019-02-26 07:43:50 ";
echo $today;
do {
$page = $_SERVER['PHP_SELF'];
$sec = "6";
//echo "Watch the page reload itself in 3 second!";
}while ( $date<=$today)
echo" when satisfied call my function and come out of loop";
break;
//if($today < $date ||$today < $tilldate){
//echo "Watch the page reload itself in 3 second!";
//break;
// echo "Watch the page reload itself in 3 second!";
//include 'FetchData.php';
//}
?>
<html>
<head>
<meta http-equiv="refresh" content="<?php echo $sec?>;URL='<?php echo $page?>'">
</head>
<body>
<?php
echo "Watch the page reload itself in six second!";
?>
</html>
如果有人在这方面帮助我,那将非常有帮助。
解决方案
如果您的目标是建立一个人们可以输入婚礼日期的网站,并在设定的时间之前通过电子邮件向他们发送提醒,您将需要以某种方式将该数据存储在服务器上。
如果您熟悉 NodeJS,您可以使用它来设置一个小应用程序,将婚礼日期保存在内存中,(尽管长期存储更安全),然后您可以使用Nodemailer之类的工具在时间到时发送电子邮件到达。
但是,如果您不了解 NodeJS,那么仅使用 Javascript 是不够的——而且您不能像您正在做的那样使用嵌入的 JS 调用 PHP 代码。请记住,PHP 是在运行任何 Javascript 之前渲染出来的,因此 JS 不能直接调用 PHP 函数。在大多数情况下,为了让 JS 与 PHP 通信,您需要对服务器上的 PHP 脚本进行 AJAX 调用。
因此,您的前端将是一个页面,该页面使用 JS 将包含婚礼日期的 AJAX 请求发送到服务器上的单独 PHP 脚本。然后,该 PHP 脚本将使用 mySQL 之类的东西将数据保存到服务器(或者在紧要关头,您可以只使用 fwrite() 写入本地文件结构,尽管完整的数据库系统更安全。)
现在您需要第二个 PHP 脚本,它每分钟左右检查一次数据,并在婚礼日期足够接近时发送一封电子邮件。但是,您不想使用自动刷新来保持 PHP 脚本运行。相反,您需要设置一个cron任务来调用您的 PHP 脚本,无论您是否经常需要它。
因此,您需要的元素是:1) 包含 Javascript 的 HTML 页面,它将 AJAX 数据发送到 2) 将数据保存到服务器的 PHP 脚本,以及 3) 由 cron 调用的第二个 PHP 脚本,用于检查数据并在必要时发送电子邮件
另一方面,如果您只需要一个特定婚礼的电子邮件提醒,您最好通过电子邮件客户端安排它,或者使用类似IFTTT的东西。
推荐阅读
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?
- c - 我知道一个地址,但我应该如何判断在哪个部分?使用C的全局区域或堆区域或堆栈区域
- json - 如何解决“手势 RangeError(索引)捕获的异常:无效值:有效值范围为空:0”
- c++ - 什么会使多边形算法中的点仅在正向和反向运行时才能正常工作?
- php - PHP:如何使用键->值对每两个分隔符将一个字符串分解为一个数组
- kubernetes - 将 GKE 集群拆除为“全新”状态而不删除它?
- scala - Spark——自定义reduce函数保存到磁盘然后上传到s3
- javascript - XMLHttpRequest 返回事件对象而不是实际数据
- fortran - Fortran 将未知大小的文件读入数组