首页 > 解决方案 > 如何根据条件调用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>

如果有人在这方面帮助我,那将非常有帮助。

标签: javascriptphphtml

解决方案


如果您的目标是建立一个人们可以输入婚礼日期的网站,并在设定的时间之前通过电子邮件向他们发送提醒,您将需要以某种方式将该数据存储在服务器上。

如果您熟悉 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的东西。


推荐阅读