首页 > 解决方案 > 带有 PHP Mailer 的联系表单,单击发送时会刷新整个页面

问题描述

我使用 PHP Mailer、JavaScript 和 Ajax 调用联系表单

一切正常,点击按钮后期待javascript。(我什至成功收到了一封电子邮件)

我的html代码:

                                <form id="contact-form" class="contact">
                                    <div class="col-md-6">
                                        <input type="text" name="name" id="fullname" placeholder="Fullname">
                                    </div>
                                    <div class="col-md-6">
                                        <input type="email" name="email" id="email" placeholder="Email adress">
                                    </div>
                                    <div class="col-md-12">
                                        <textarea id="message" name="message" placeholder="Message"></textarea>
                                    </div>
                                    <div class="col-md-12">
                                    <button id="gumb" type="button" class="btnc" onclick="validateContact();">Send</button>
                                    </div>
                                </form>

                            </div>      

                            <div class="col-md-12">
                                <div id="response_brought"></div><!-- This will display the response from the server -->
                                <p>&nbsp;</p>
                            </div>
                        

JavaSript 代码(这工作正常,但是在我按下按钮后,我收到了电子邮件,但我的最后一个回复保持不变.. 它没有改变。它显示来自 fullname=="" 的响应('请在必填字段中输入您的全名继续。谢谢。')..所以我猜 Ajax调用里面有一个错误

function validateContact() {
"use strict";
var valid = true;

var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var formData = {
    fullname: $("#fullname").val(),
    email: $("#email").val(),
    message: $("#message").val(),
};
var fullname = $("#fullname").val();
var emailreg = $("#email").val();
var message = $("#message").val();

    //dataString = {'fullname': fullname, 'email': email,   'message': message, 'submitted': '1'};

if (fullname === "") { //Validation against empty field for fullname
    $("#response_brought").html('<br clear="all"><div class="form_info" align="left">Please enter your fullname in the required field to proceed. Thanks.</div>');
    $("#fullname").focus();
    valid = false;
} else if (emailreg === "") { //Validation against empty field for email address
    $("#response_brought").html('<br clear="all"><div class="form_info" align="left">Please enter your email address in the required email field to proceed. Thanks.</div>');
    $("#email").focus();
    valid = false;
} else if (reg.test(emailreg) === false) { //Validation for working email address
    $("#response_brought").html('<br clear="all"><div class="form_info" align="left">Sorry, your email address is invalid. Please enter a valid email address to proceed. Thanks.</div>');
    $("#email").focus();
    valid = false;
} else if (message === "") { //Validation against empty field for email message
    $("#response_brought").html('<br clear="all"><div class="form_info" align="left">Please enter your message in the required message field to proceed. Thanks.</div>');
    $("#message").focus();
    valid = false;
} 
valid = true;

$.ajax({
type: "POST",
url: "sendemail.php",
data: formData,
success:function(data){
    var response_brought = response.indexOf('Congrats');
    $(".contact-form").slideUp(500);
    $("#response_brought").html(response);

    setTimeout(function () {
        $("#response_brought").html('');
    }, 10000);
    },
    error:function (){}
});
}

我的控制台中的错误:错误

还有我的php代码:

use PHPMailer\PHPMailer\PHPMailer;

require_once 'phpmailer/src/Exception.php';
require_once 'phpmailer/src/PHPMailer.php';
require_once 'phpmailer/src/SMTP.php';

$mail = new PHPMailer(true);

$mail->IsSMTP();
$mail->Mailer = "smtp";

//$mail->SMTPDebug  = 2;
$mail->SMTPAuth   = True;

$mail->Host       = "smtp host";
$mail->Username   = "myemail";
$mail->Password   = "****";

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = '587';

$fullname     = $_POST['fullname'];
$email    = $_POST['email'];
$message = $_POST['message'];

$success = $error = '';

if (!empty($fullname) && !empty($email) && !empty($message)) {

    try {
        $mail->setFrom('myemail');
        $mail->addAddress('myemail');
        $mail->isHTML(true);
        $mail->Subject = 'Mail poslan iz spletnega obrazca';
        $mail->Body = "Ime: " . $_POST["fullname"] . "<br> Email: " . $_POST["email"] .         "<br>";
        $mail->Body .= $message;
        $mail->send();
        $success = "Message sent successfully";
    } catch (Exception $e) {
        $error = "Sorry message could not send, try again";
    } 
    }

谢谢您的帮助

标签: javascriptphphtmljqueryajax

解决方案


推荐阅读