简体   繁体   English

使用Ajax和jQuery发送邮件(邮件到php Post方法)

[英]send mail (mail to php Post method) using Ajax and jQuery

i'm sending mail from my html page by executing a Php function, my index.html : 我正在通过执行Php函数my index.html从html页面发送邮件:

  <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>

my sendmail.php: 我的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);
}
?>

the above is working fine but its also leaving current page i wanna execute the above method on current page and for that according to this question & this question 上面的工作正常,但它也离开了当前页面,我想在当前页面上执行上述方法,并根据这个问题和这个问题

i have to use Ajax and jQuery ? 我必须使用AjaxjQuery吗? and i know nothing about them so far i have this : 我到目前为止对它们一无所知:

////in my index.html
<button type="button">send mail</button>
<p></p>
<script type="text/javascript">



    $(document).ready(function(){
        $("button").click(function(){

            $.ajax({
                type: 'POST',
                url: 'sendmail.php',
                success: function(data) {
                    alert(data)
                    $("l").text(data);

                }
            });
   });
});
</script>

i know above is not correct & its not working (currently its showing sendmail.php's text in a popup) how can i make it work so that i can execute sendmail.php ??? 我知道上面是不正确的并且它不起作用(当前它在弹出窗口中显示sendmail.php的文本)我该如何使其起作用,以便我可以执行sendmail.php?

UPDATE: 更新:

index.html index.html

    <form method="POST" id="myForm" 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>



</div>
<script type="text/javascript">


  $(document).ready(function(){
        $("#myForm").on('submit', function(){
            var formData = $(this).serialize();
            $.ajax({
                type: 'POST',
                url: 'sendmail.php',
                data: formData,
                success: function(response.success) {
                    alert(response.success)
                    $("l").text(response.success);

                }
            });
   });
</script>
    `

The below should work for you using .on('submit' and .serialize() 下面应该使用.on('submit'.serialize()为您工作

HTML 的HTML

<form method="POST" id="myForm" 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>

JS JS

$(document).ready(function() {
    $("#myForm").on('submit', function(event) {
        event.preventDefault(); 
        var formData = $(this).serialize();
        $.ajax({
            type: 'POST',
            url: 'sendmail.php',
            dataType: "json",
            data: formData,
            success: function(response) { 
                alert(response.success); 
            },
            error: function(xhr, status, error){
                console.log(xhr); 
            }
        });
    });
});

PHP 的PHP

<?php
if(isset($_POST['message'])){
    $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();
    if(mail($to, $subject, $message, $headers)) echo json_encode(['success'=>true]); 
    else echo json_encode(['success'=>false]);
    exit;
 }
?>
<form id="my_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 id="my_button" type="button" name="send" value="SEND">
</form>

jQuery Code jQuery代码

  $(document).ready(function(){
        $("#my_button").click(function(){

            $.ajax({
                type: 'POST',
                url: 'sendmail.php',
                data : $('#my_form').serialize(),
                success: function(data) {

                }
            });
   });

Php code 邮递区号

<?php

$searcharray = array();
parse_str($_POST['data'], $searcharray);
if($searcharray['send'] == 'SEND'){

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

So give and id for your form tag like the following code. 因此,为您的表单标签提供ID和ID,例如以下代码。

 <form method="POST" action="sendmail.php" id="sendForm">
 <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" id="submitButton">    
 </form>

Then update your script like the following code 然后像下面的代码一样更新脚本

    $(document).ready(function(){
        $("#submitButton").click(function(event){
         event.preventDefault();
        var datas = $('#sendForm').serialize();

            $.ajax({
                type: 'POST',
                url: 'sendmail.php',
                data: datas,

                success: function(data) {
                    alert(data)
                    $("l").text(data);

                }
            });
   });
});

Check this url for how to submit form data using ajax 检查此URL ,了解如何使用ajax提交表单数据

Hi give your form an id and use JS preventDefault() 嗨,给您的表单一个id并使用JS preventDefault()

<form method="POST" id="myForm" 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" id="sendMail" name="send" value="SEND">
</form>

sendmail.php 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();
    //check if the mail was sent
    if (mail($to, $subject, $message, $headers)) {
        echo json_encode(['result' => true]);
    }else {
        echo json_encode(['result' => false]);
     }
   }
?>

jQuery jQuery的

$(document).ready(function () {
//send button click
$('#sendMail').on('click', function (e) {
    e.preventDefault();
    $.post('sendmail.php', $('#myForm').serialize(), function (data) {
        //show the results if the mail was sent or not
        var res = $.parseJSON(data);
        if (res.result === true) {
           $('#feedback').html('your mail was sent');
        }else {
           $('#feedback').html('your mail was not sent');
        }
    });
});
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM