2013-03-17 83 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