javascript - 确认 JavaScript 后运行 php 代码

标签 javascript php jquery ajax email

当我更新状态时,会发送一封电子邮件。问题是,它还有许多其他字段,每当我更新其中任何一个字段时,它都会再次发送电子邮件。我只想请求您确认是否要发送电子邮件。我确实使用了 ajax 来做到这一点,但在控制台中,它显示电子邮件已发送,但收件箱中没有收到任何内容。

Javascript代码

<script type="text/javascript">
function send_email(){

    var delete_confirmed=confirm("Are you sure you want to send email?");

    if (delete_confirmed==true) {

  $.ajax({
       type: "POST",
       url: 'email.php',
       data:{action:'call_this'},
       success:function() {
       console.log('email sent');
       } 
  });
}}
</script>

电子邮件.php

  if(isset($_POST['status']) == 'completed' && $_POST['action'] == 'call_this'){

        $cmail = new PHPMailer;

        $cmail->isSMTP();                            // Set mailer to use SMTP
        $cmail->SMTPAuth = true;                     // Enable SMTP authentication

        $cmail->Host = $smtp_server;            // Specify main and backup SMTP servers
        $cmail->Username = $username;               // SMTP username
        $cmail->Password = $password;               // SMTP password
        $cmail->SMTPSecure = "ssl";                  // Enable TLS encryption, `ssl` also accepted
        $cmail->Port = 465;                          // TCP port to connect to

        $cmail->setFrom("example@example.com", "Example");
        $q_mail = "SELECT * FROM order_details WHERE order_id = '$_GET[edit_id]'";

        $r_mail = mysqli_query($conn, $q_mail);
        while ($r_rows = mysqli_fetch_assoc($r_mail)) {

        $cmail->addAddress($r_rows['email'], $r_rows['firstname']); // Add a recipient
        $cmail->isHTML(true);  // Set email format to HTML

        $bodyContent = 'test message';

        $cmail->Subject =  "test subject" ;
        $cmail->Body    = $bodyContent;

        if(!$cmail->send()) {
            $error = $cmail->ErrorInfo;
        } else {
            $error = 'Message has been sent';
                }

            }

        }

表单 HTML

<div class="col-md-2" style="padding-left:0px;" ></br>
    <input type="submit" class="btn navbar-bar btn-xs btn-success" name="status" onclick="send_email();" value="Update">
</div>

最佳答案

在 PHP 中,您要检查 isset($_POST['status']) == 'completed',它始终为 false。 isset 只会返回一个 bool 值。此外,它始终为 false,因为您没有将状态传递给 email.php,而只传递了操作。您需要进行一些更改才能解决此问题。第一个是你的 javascript:

$.ajax({
   type: "POST",
   url: 'email.php',
   data:{action:'call_this', status: 'completed'},
   success:function() {
       console.log('email sent');
   } 

});

第二个是 PHP 脚本:

if( ( isset($_POST['status']) && $_POST['status'] == 'completed' ) && $_POST['action'] == 'call_this'){

关于javascript - 确认 JavaScript 后运行 php 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39388742/

相关文章:

javascript - 我如何在移动设备上显式触发 jQuery .click() 或 .tap() 事件

javascript - 如何在提交时调用 JAVASCRIPT 函数

Javascript 赋值延迟?

Javascript 属性未更新

php - 将mysql数据库导入wamp服务器

php - 在 Ubuntu10 中安装 pdo_pgsql 不工作

javascript - @keyframes 动画文字淡入淡出

javascript - 使用事件的feathersjs套接字

php - 使用 CSS 样式表格式化 PHP 值

javascript - 使用 jQuery 进行实时 CSS 编辑