簡體   English   中英

jQuery,AJAX PHP聯系表

[英]jQuery, AJAX PHP Contact Form

我一直在一個接一個的瀏覽線程,希望能解決這個問題,但是沒有運氣,基本上我有一個非常簡單的聯系表單,可以正常工作,但是當我嘗試通過jQuery AJAX進行處理時,沒有電子郵件發送成功回調觸發器。

阻止它工作的原因是所有代碼都在同一頁面(index.php)上,表單處理PHP沒有單獨的頁面,所以現在所有代碼都在同一頁面上,我必須在周圍添加一個if語句PHP if (!empty($_POST['contact-submit'])) {} ,如果從其自己的文件中調用PHP,則不必這樣做。 我不想將PHP放在單獨的文件中,所有內容都必須放在一頁上,如果有人對如何克服這個問題有任何想法,我將不勝感激,因為這使我發瘋!

HTML:

<form class="contact-form island" method="post" action="">
  <ul class="form-fields">
    <li>
      <label>Your Name</label>
      <input class="text-input" type="text" name="name" required value="TEST NAME">
    </li>
    <li>
      <label>Your Email</label>
      <input class="text-input" type="email" name="email" required value="email@gmail.com">
    </li>
    <li>
      <label>Subject</label>
      <input class="text-input" type="text" name="subject" required value="TEST SUBJECT">
    </li>
    <li>
      <label>Message</label>
      <textarea rows="7" name="message" required>MESSAGE</textarea>
    </li>
    <li>
      <input class="submit-input" type="submit" value="Send" name="contact-submit">
    </li>
  </ul>
</form>

PHP:

<?php
  if (!empty($_POST['contact-submit'])) {
    $name = trim(stripslashes($_POST['name'])); 
    $email = trim(stripslashes($_POST['email'])); 
    $subject = trim(stripslashes($_POST['subject'])); 
    $message = trim(stripslashes($_POST['message'])); 

    $email_from = $email;
    $email_to = 'email@gmail.com';

    $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

    $success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>');

    echo '<p>Email Sent!</p>';
  }
?>

jQuery的:

$(function() {

  var form = $('.contact-form');
  form.submit(function () {
    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      data: form.serialize(),
      success: function() {
        $.fancybox({'content': 'Email Sent!'});
      }
    });
    return false;
  });

});

我很無聊,我根據您的少量代碼和我的一些內容使您工作: http : //pastie.org/private/zsh9jqej1zkdpeouditww

幾個簡短的注釋:它確實根據用戶提交的內容向用戶提供反饋,因此,如果有空白,則將其踢回並讓他們重試。 如果您要使用它,我會在其中放置一個“正在加載圖像” ...本質上是為了防止人們向按鈕發送垃圾郵件。 在我的服務器上,單擊=>幾乎立即返回,並不意味着總是這樣。

注意:用您的PHP文件名編輯第48行。

在jQuery-ajax部分中: url: form.attr('action')指向表單中的action-attribute,但是在html-form中為空。

<form class="contact-form island" method="post" action="">

暫無
暫無

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

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