【问题标题】:PHP contact form with Jquery validation not working带有 Jquery 验证的 PHP 联系表单不起作用
【发布时间】:2015-06-29 12:19:40
【问题描述】:

问题是,无论我尝试什么都行不通。尝试了我自己的脚本,尝试了一切,然后在谷歌上找到了一些并尝试了它们,但是没有,不知道缺少什么,但是它不起作用。 到目前为止最接近的,我有空的电子邮件。这是最新版本。谁能告诉我缺少什么?

HTML

<div class="container-fluid">
                        <p id="returnmessage"></p>
                        <form action="sendEmail.php" id="contact_form" method="post">
                            <h2 style="font-size:14px;line-height:18px;font-weight:600;padding-bottom:0;">Bize Yazın</h2>
                            <ul class="contactform">
                                <li>
                                    <div id="name_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen adınızı giriniz.</div>
                                    <span class="contact-input-icon" style="text-align:left"><i class="fa fa-user"></i></span>
                                    <div class="input-field">
                                        <input type="text" style="border:1px solid rgba(220,220,220,0.5)" name="contactName" id="contactName" value="" class="required requiredField" placeholder="Ad Soyad"/>
                                    </div>
                                </li>
                                <li>
                                    <div id="email_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen eposta adresinizi giriniz.</div>
                                    <span class="contact-input-icon"><i class="fa fa-envelope"></i></span>
                                    <div class="input-field">
                                        <input type="email" style="border:1px solid rgba(220,220,220,0.5)" name="contactEmail" id="contactEmail" value="" class="required requiredField email" placeholder="Eposta"/>
                                    </div>
                                </li>
                                <li>
                                        <input type="text" style="border:1px solid rgba(220,220,220,0.5)" name="contactSubject" id="contactSubject" value="" class="hidden" placeholder=""/>
                                </li>
                                <li class="textarea">
                                    <div id="message_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen mesajınızı giriniz.</div>
                                    <span class="contact-input-icon"><i class="fa fa-pencil"></i></span>
                                    <div class="input-field">
                                        <textarea name="contactMessage" style="border:1px solid rgba(220,220,220,0.5)" id="contactMessage" rows="6" cols="20" class="required requiredField" placeholder="Mesajınız"></textarea>
                                    </div>
                                    <div id="mail_success" class="success" style="color:#00CC00"><i class="fa fa-check"></i> İlginiz için teşekkürler. En kısa sürede sizinle irtibata geçeceğiz.</div>
                                    <div id="mail_fail" class="error" style="color:#aa3939"><i class="fa fa-times"></i> Üzgünüz, mesajınız iletilemedi. Daha sonra lütfen tekrar deneyin.</div>
                                </li>
                                <li class="buttons">
                                    <div id="cf_submit_p">
                                    <input type="hidden" style="border:1px solid rgba(220,220,220,0.5)" name="submitted" id="submitted" value="true" />
                                    <button type="submit" style="border:1px solid #3f97cf" class="button" id="send_message"><i class="fa fa-paper-plane-o" style="font-size:20px;color:#3f97cf"></i></button>
                                    </div>
                                </li>
                            </ul>
                        </form>
                    </div> <!--end container-fluid-->
                </div><!-- #contact-canvas -->

JS 验证

<script type="text/javascript">
    $(document).ready(function(){
        $('#send_message').on('submit',function(e){
            e.preventDefault();
            var error = false;
            var name = $('#contactName').val();
            var email = $('#contactEmail').val();
            var subject = $('#contactSubject').val();
            var message = $('#contactMessage').val();
            if(name.length == 0){
                var error = true;
                $('#name_error').fadeIn(500);
            } else {
                $('#name_error').fadeOut(500);
            }
            if(email.length == 0 || email.indexOf('@') == '-1'){
                error = true;
                $('#email_error').fadeIn(500);
            } else {
                $('#email_error').fadeOut(500);
            }
            if(message.length == 0){
                error = true;
                $('#message_error').fadeIn(500);
            } else {
                $('#message_error').fadeOut(500);
            } if(error == false){
                $('#cf_submit_p').attr({'disabled' : 'true', 'value' : 'Gönderiliyor...' });
                $.post("send_email.php", $("#contact_form").serialize(),function(result){
                    if(result == 'sent'){
                        $('#cf_submit_p').remove();
                        $('#mail_success').fadeIn(500);
                    } else {
                        $('#mail_fail').fadeIn(500);
                        $('#cf_submit_p').removeAttr('disabled').attr('value', 'Gönder');
                    }
                });
            }
            return false;
        });
    });
</script>

和 PHP

<?php



//Değiştir. Site admini eposta adresi. 

$akaEmail = 'kreaft@outlook.com';





if($_POST) {



   $name = trim(stripslashes($_POST['contactName']));

   $email = trim(stripslashes($_POST['contactEmail']));

   $subject = trim(stripslashes($_POST['contactSubject']));

   $contact_message = trim(stripslashes($_POST['contactMessage']));



   // İsim doğrulama

    if (strlen($name) < 2) {

        $error['name'] = "Lütfen adınızı girin.";

    }

    // Email doğrulama

    if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {

        $error['email'] = "Lütfen geçerli bir eposta adresi girin.";

    }

    // Mesaj doğrulama

    if (strlen($contact_message) < 15) {

        $error['message'] = "Lütfen mesajınızı girin. (Min. 15 karakter)";

    }

   // Konu

    if ($subject == '') { $subject = "Site İletişim Formu"; }





   // Mesajı oluşturuyoruz

   $message .= "Gönd.: " . $name . "<br />";

   $message .= "Eposta: " . $email . "<br />";

   $message .= "Mesaj: <br />";

   $message .= $contact_message;

   $message .= "<br /> ----- <br /> Bu eposta site iletişim formu üzerinden gönderilmiştir. <br />";



   // Başlıkları oluşturuyoruz

   $from =  $name . " <" . $email . ">";



   // Başlıklar

    $headers = "From: " . $from . "\r\n";

    $headers .= "Reply-To: ". $email . "\r\n";

    $headers .= "MIME-Version: 1.0\r\n";

    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";





   if (!$error) {



      ini_set("sendmail_from", $akaEmail); // windows server için

      $mail = mail($akaEmail, $subject, $message, $headers);



        if ($mail) { echo "OK"; }

      else { echo "Bir hata oluştu. Lütfen tekrar deneyin."; }



    } # hiç bir doğrulama hatası çıkmazsa bitir, çıkarsa hataları listeliyoruz.



    else {



        $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;

        $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;

        $response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;



        echo $response;



    } # bir doğrulama hatası olmuşsa burada bitir.



}



?>

【问题讨论】:

  • “不起作用”是什么意思?
  • '注意:未定义的变量:第 61 行 /Users/kobigo/Sites/yedikitamuhendislik.com/sendEmail.php 中的消息'这是我现在注意到的最后一个错误。 @JayBlanchard
  • 你探索过为什么这个变量是未定义的吗?
  • 将代码缩小到问题所在。当有多个问题时,问多个问题

标签: php jquery contact-form


【解决方案1】:

注意:未定义变量:第 61 行 /Users/kobigo/Sites/yedikitamuhendislik.com/sendEmail.php 中的消息

看看第 61 行:

$message .= "Gönd.: " . $name . "<br />";

您正在尝试追加到$message,但您从未定义过它。您可以在它被定义之后 附加到它,但是在第一行您需要简单地定义它并分配给它:

$message = "Gönd.: " . $name . "<br />";

其余类似的行可以附加到它上面。


您还在 JavaScript 代码中附加了错误的事件:

$('#send_message').on('submit',function(e){

#send_message 是一个按钮,而不是一个表单。它没有submit 事件。改为附加到表单:

$('#contact_form').on('submit',function(e){

【讨论】:

  • 谢谢大卫,这很有帮助。错过了那里的那个点。但现在它把我送到另一个页面,它给出了错误,我希望它先运行 Jquery 验证,然后发布.. 有什么想法吗?
  • @vincodisouza:定义“给出错误”。请理解,我无法从这里看到您的屏幕。 Stack Overflow 不能很好地替代调试器,您能否具体说明代码的行为与您期望的偏差在哪里?
  • 错误消息,例如“无效电子邮件”等。我希望它显示在同一页面中,但它会将我重定向到另一个页面。我认为 jquery 验证不起作用。如何在 php post 之前运行查询验证?
  • @vincodisouza:我已经更新了答案。您在 JavaScript 代码中附加了错误的事件。这将是一个很好的机会来查看浏览器的调试工具,以帮助您逐步执行代码并查看运行时值。在编写代码时,调试是一个无价的过程。
  • 感谢您的更正。我在按钮单击表单提交之间切换.. 忘了它.. 谢谢.. 现在我看到我的验证错误消息,但表单没有反应。没有错误或成功消息,也没有发送邮件。有什么想法吗?
【解决方案2】:

您试图在第 61 行附加到 $message 变量而没有先初始化它。通过删除附加符号 . 来修复第 61 行

 $message = "Gönd.: " . $name . "<br />";

或者先初始化变量,比如:

 $message = "";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多