【问题标题】:perform Post method on current page [duplicate]在当前页面上执行 Post 方法[重复]
【发布时间】:2017-04-09 02:32:08
【问题描述】:

我在发送邮件时使用此表单(通过 Post 方法):

<form method="POST" action="sendmail.php">
  <input type="text" name="sender_name" placeholder="Name" required="">
  <input type="text" name="sender_email" placeholder="Email" required="">
  <input type="text" name="subject" placeholder="Subject" required="">
  <textarea placeholder="Message" name="message" required=""></textarea>
  <input type="submit" name="send" value="SEND">
</form>

这是我的sendmail.php

<?php
  if($_POST['send'] == 'SEND'){    
    $to      = 'queries@mydomain.com';
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 
    $headers = "From: ".$_POST['sender_nam‌​e​']." <".$_POST['sender_em‌​ail‌​'].">\r\n"; $headers = "Reply-To: ".$_POST['sender_ema‌​il‌​']."\r\n"; 
    $headers = "Content-type: text/html; charset=iso-8859-1\r\n";
    'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);
  }
?>

如您所见,在上面的代码中,我发送的邮件工作正常,但上述操作是通过离开当前页面来执行的

例如,在发布我的网址之前是mydomain.com,发布之后它变成了mydomain.com/sendmail.php

那么如何在不离开当前页面的情况下执行上述功能呢?

【问题讨论】:

  • 如果不想重新加载页面,请使用ajax请求。

标签: javascript php html


【解决方案1】:

你了解 Ajax 和 jQuery 吗?阅读更多,here

您的 ajax 调用可能如下所示。

    $.ajax({
      url: "yourApplication/methodWhichSendsEmail",
      type: "post",
      data:JSON.stringify({
           to : $to,
           subject: $subject,
           message: $message,
           headers: $headers
})

}).done(function() {
  //Whatever you want to do once the request is succeed. As you don't want to reload. i.e.
  alert("Email Sent");
});

【讨论】:

  • 我必须在我的 index.html 中哪里调用? @superCoder
  • 在您的页面中包含 jQuery,并将上述 JavaScript 代码包含在
【解决方案2】:

通过 AJAX 或者您可以执行以下操作:

  1. 您在&lt;form&gt; 中指定action=""
  2. 您包含从sendmail.phpindex.php(或任何您的主页)的代码

【讨论】:

    【解决方案3】:

    您需要将表单操作设置为空。

    然后在 PHP 代码中,您需要检查表单是否已发布。所以需要先通过php函数isset检查它然后你可以做任何你想做的事情,这只会在表单发布时发送电子邮件

      if(isset ($_POST['send']) && $_POST['send'] == 'SEND'){    
        $to      = 'queries@mydomain.com';
        $subject = $_POST['subject']; 
        $message = $_POST['message']; 
        $headers = "From: ".$_POST['sender_nam‌​e​']." <".$_POST['sender_em‌​ail‌​'].">\r\n"; $headers = "Reply-To: ".$_POST['sender_ema‌​il‌​']."\r\n"; 
        $headers = "Content-type: text/html; charset=iso-8859-1\r\n";
        'X-Mailer: PHP/' . phpversion();
    
        mail($to, $subject, $message, $headers);
      }
    

    【讨论】:

      猜你喜欢
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2023-03-10
      • 1970-01-01
      • 2020-06-17
      • 2017-12-14
      • 2012-10-06
      相关资源
      最近更新 更多