簡體   English   中英

AJAX聯系表格的PHP代碼

[英]PHP code for AJAX contact form

我試圖制作一個使用jQuery AJAX和PHP的聯系表單。 我的HTML如下

<form action="#" id="contactForm" method="post" name="contactForm">
<fieldset>
    <div class="col-sm-12">
        <input id="contactName" name="contactName" placeholder="Your Name*" type="text" value="" required>
    </div>

    <!-- Name Field [ END ] -->

    <div class="col-sm-12">
        <input id="contactEmail" name="contactEmail" placeholder="Your Email*" type="email" value="" required>
    </div>

    <!-- Email Field [ END ] -->

    <div class="col-xs-12">
        <textarea cols="5" id="contactMessage" name="contactMessage" placeholder="Your Message....*" required></textarea>
    </div>

    <!-- Message Field [ END ] -->

    <div class="col-xs-12">
        <button class="submit">SEND</button>
    </div>

    <!-- Submit Button [ END ] -->

    <div class="error col-xs-12">
        <h3>Sorry! Your message was not sent.</h3>
    </div>

    <!-- Error Message [ END ] -->

    <div class="success col-xs-12">
        <h3>Success! Your message was sent.</h3>
    </div>

    <!-- Seccess Message [ END ] -->

</fieldset>

而jQuery代碼如下

$('form#contactForm').submit(function () {

    var url = $('#contactForm').attr('action'),
        type = $('#contactForm').attr('method'),

        contactName = $('#contactForm #name').val(),
        contactEmail = $('#contactForm #email').val(),
        contactMessage = $('#contactForm #message').val(),
        data = {
            name: contactName,
            email: contactEmail,
            message: contactMessage
        };

    $.ajax({
        type: type,
        url: url,
        data: data,
        success: function () {
            $('.success').fadeIn();
            $('.error').fadeOut();
        },
        error: function () {
            $('.error').fadeIn();
            $('.success').fadeOut();
        }
    });
    return false;
});

使該表單正常工作的PHP代碼可能是什么。 我正在使用以下代碼

 <?php

    if ( isset( $_POST['name'], $_POST['email'], $_POST['message'] ) ) {

        $to = 'mail@example.com'; //my email address here
        $subject = 'Message From :' . $_POST['name'];
        $message = $_POST['message'];
        $headers = 'From :' . $_POST['email'].'\r\n';

        mail($to,$subject,$message,$headers);

    }
?>

但它不起作用。 顯示成功消息,但未收到郵件。 我對PHP不太熟悉。

請幫忙....

您的成功消息顯示,因為成功調用了php頁,但這並不表示郵件已成功發送。 您應該通過返回郵件功能響應進行檢查:

$response = mail($to,$subject,$message,$headers);
echo $response;

這將返回true或false。 另外,您還必須檢查是否正確接收了郵件,它可能最終成為垃圾郵件,或者由於各種原因而被您的郵件服務器拒絕。 在這種情況下,您可以對郵件標題進行一些附加操作。 以下是有關如何通過郵件的一些提示

嘗試添加

method: "POST",

$.ajax調用中,默認情況下$ .ajax使用GET請求

這將為您服務

$('form#contactForm').submit(function () {

    var url = $('#contactForm').attr('action');
        var type = $('#contactForm').attr('method');

        var contactName = $('#contactName').val(); 
        var contactEmail = $('#contactEmail').val(); 
         var contactMessage = $('#contactMessage').val();
        data = {
            name: contactName,
            email: contactEmail,
            message: contactMessage
        };console.log(data);

    $.ajax({
        type: type,
        url: url,
        data: data,
        success: function () {
            $('.success').fadeIn();
            $('.error').fadeOut();
        },
        error: function () {
            $('.error').fadeIn();
            $('.success').fadeOut();
        }
    });
    return false;
});

您的PHP代碼變為

<?php
if ( isset( $_POST['name'], $_POST['email'], $_POST['message'] ) ) {

    $to = $_POST['email']; //my email address here
    $subject = 'Message From :' . $_POST['name'];
    $message = $_POST['message'];
    $headers = 'From :' . $_POST['email'].'\r\n';

    mail($to,$subject,$message,$headers);

}
        echo 'sucess';
?> 

並在這里也改變

<form action="===GIVE YOUR FILE NAME CONTAINING PHP mail() CONTAINS====" id="contactForm" method="post" name="contactForm">

並且您應該確認您的服務器已啟用mail()函數

試試這個,讓我知道..

暫無
暫無

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

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