2013-03-17 85 views
1

所以我有這個AJAX聯繫表單,我之前使用過的代碼。我無法弄清楚它爲什麼不起作用。AJAX聯繫表格無法發佈數據

HTML 
<div id="website-contact-form"> 
<form id="website_contact" name="website_contact"> 
     <input id="email-address-input" name="website-email" type="text" placeholder="Your email here" class="order-form-input" /><br /> 
     <textarea name="website-message" placeholder="Please give a brief description of what you have in mind, plus contact details." class="order-form-textarea"></textarea> 
     <a href="#" id="submit-website-project" name="submit-website-project" class="send-button"></a> 
</form> 
</div> 

JS

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#submit-website-project').click(function (e) { 

     e.preventDefault(); 
     if ($('#email-address-input').val() != ""){ 

       postForm("ajax/contact-website.php", "website_contact", 
       function (data) { 

        if (data == "success") { 
         $('#website-contact-form'). 
         html("<br />Thankyou for your enquiry. I'll "+ 
          "get in touch shortly."); 
        } else { 

        alert("That didn't work. Try again?"); 
        } 
       }); 
     } 
    }); 

}); //END DOCUMENT READY 

function postForm(url, form_id, success_func) { 
    $.ajax({ 
     type: "POST", 
     url: url, 
     data: $("#" + form_id).serialize(), 
     success: function (data) { 
      success_func(data); 
     } 
    }); 
} 
</script> 

最後我的PHP

<?php 

if (isset($_POST['email'])) { 
    $_POST['email'] = trim(@$_POST['email']); 

    $ToEmail = 'barneywimbush:gmail.com'; 
    $EmailSubject = 'Barneywimbush.com'; 
    $mailheader = "From: ".$_POST["email"]."\r\n"; 
    $mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
    $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 

    $MESSAGE_BODY = "Email: ".$_POST["email"].""; 
    $MESSAGE_BODY .= "Comment: ".nl2br($_POST["project_description"]).""; 

    $res = mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader); // or die ("Failure") 

    if ($res) { 
     echo "success"; 
    } 
    else { 
     echo "failed"; 
    } 
} 
else { 
    echo "failed"; 
} 

我正準備報警 「那沒有,請再試一次?」

+1

您是否使用Google Chrome/Firefox?檢查您的網絡面板以查看請求是否觸發,如果是,請檢查方法類型以及試圖發送的請求參數。 – duckbox 2013-03-17 19:50:00

+0

它指的是形式的外部div,對不起,我現在已經添加了。在網絡面板中,似乎沒有任何請求正在觸發。在http://barneywimbush.com/websites上查看它,然後點擊訂購以查看它的行動。 – Barney 2013-03-17 19:54:26

回答

4

您$ _POSTs你的PHP變量是不正確的,在檢查網絡面板,您的形式發送關閉,

網站,電子郵件: [email protected]

網站消息:測試數據

雖然你的PHP代碼看$ _POST ['email'],它應該是$ _POST ['website-email'];

更改輸入元素的名稱屬性以更改請求的參數名稱。

+0

對那個有好處;) – 2013-03-17 20:00:57

+0

對不起,但是有點晚了,但是你的意思是「改變你的輸入元素的名稱屬性來改變請求的參數名稱」。 ? – Barney 2013-03-17 20:16:38

+1

你輸入字段, <輸入ID =「電子郵件地址輸入」 NAME =「網站的電子郵件」類型=「文本」佔位符=「您的電子郵件這裏」類=「訂單形式輸入」 />
name屬性(name =「website-email」),如果您在PHP代碼中將其更改爲(name =「email」),則$ _POST ['email']將會成功註冊。否則,它將需要$ _POST ['website-email'] – duckbox 2013-03-17 20:57:41