簡體   English   中英

如何根據條件在JavaScript中調用函數

[英]How to invoke the function in javascript based on condition

我正在嘗試發送用於婚禮活動的自動生成的郵件,因此我有一個使用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在運行任何Java腳本之前就已呈現出來,因此JS無法直接調用PHP函數。 在大多數情況下,為了使JS與PHP進行通信,您需要對服務器上的PHP腳本進行AJAX調用。

因此,您的前端將是一個頁面,該頁面使用JS向服務器上的單獨PHP腳本發送包含結婚日期的AJAX請求。 然后,該PHP腳本將使用mySQL之類的數據將數據保存到服務器(或者在緊要關頭,您可以使用fwrite()寫入本地文件結構,盡管完整的數據庫系統更安全。)

現在,您需要一個第二PHP腳本,該腳本每分鍾左右檢查一次數據,並在結婚日期足夠近時發送電子郵件。 但是,您不想使用自動刷新來保持PHP腳本運行。 相反,您將需要設置一個cron任務來調用您的PHP腳本,但是經常需要它。

因此,您需要的元素是:1)包含Javascript的HTML頁面,該頁面將AJAX數據發送到2)一個將該數據保存到服務器的PHP腳本,以及3)由cron調用的第二個PHP腳本,用於檢查數據並在必要時發送電子郵件

另一方面,如果您需要的只是一個特定婚禮的電子郵件提醒,那么最好通過電子郵件客戶端或使用IFTTT之類的方法安排它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM