电子邮件提交表单错误
问题描述:
我有一个表单用于在我的页面上提交电子邮件,我无法找到是什么原因导致它回滚失败的提交。以下是关于表单的代码部分。我绕过了JS,直接使用PHP脚本和邮件发送,所以这似乎不是问题。有任何想法吗?电子邮件提交表单错误
JS:
$('#button-send').click(function(event){
$('#button-send').html('Sending E-Mail...');
event.preventDefault();
$('html, body').scrollTo($('#contact'), 'fast');
$.ajax({
type: 'POST',
url: 'send_form_email.php',
data: $('#contact_form').serialize(),
success: function(html) {
if(html.success == '1')
{
$('#button-send').html('Send E-Mail');
$('#success').show();
}
else
{
$('#button-send').html('Send E-Mail');
$('#error').show();
}
},
error: function(){
$('#button-send').html('Send E-Mail');
$('#error').show();
}
});
});
});
function valemail(email) {
var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
这里是PHP代码:
<?php
// EDIT THE 2 LINES BELOW AS REQUIRED
$send_email_to = "[email protected]";
$email_subject = "New Message";
function send_email($name,$email,$email_message)
{
global $send_email_to;
global $email_subject;
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= "From: ".$email. "\r\n";
$message = "<strong>Email = </strong>".$email."<br>";
$message .= "<strong>Name = </strong>".$name."<br>";
$message .= "<strong>Message = </strong>".$email_message."<br>";
@mail($send_email_to, $email_subject, $message,$headers);
return true;
}
function validate($name,$email,$message)
{
$return_array = array();
$return_array['success'] = '1';
$return_array['name_msg'] = '';
$return_array['email_msg'] = '';
$return_array['message_msg'] = '';
if($email == '')
{
$return_array['success'] = '0';
$return_array['email_msg'] = 'email is required';
}
else
{
$email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email)) {
$return_array['success'] = '0';
$return_array['email_msg'] = 'enter valid email.';
}
}
if($name == '')
{
$return_array['success'] = '0';
$return_array['name_msg'] = 'name is required';
}
else
{
$string_exp = "/^[A-Za-z .'-]+$/";
if (!preg_match($string_exp, $name)) {
$return_array['success'] = '0';
$return_array['name_msg'] = 'enter valid name.';
}
}
if($message == '')
{
$return_array['success'] = '0';
$return_array['message_msg'] = 'message is required';
}
else
{
if (strlen($message) < 2) {
$return_array['success'] = '0';
$return_array['message_msg'] = 'enter valid message.';
}
}
return $return_array;
}
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$return_array = validate($name,$email,$message);
if($return_array['success'] == '1')
{
send_email($name,$email,$message);
}
header('Content-type: text/json')
echo json_encode($return_array);
die();
?>
和我的页面上的HTML:
<form method="post" action="send_form_email.php" id="contactform">
<div>
<label for="name">Enter your name</label>
<input type="text" class="input-field" id="name" name="name" value="">
</div>
<div>
<label for="email">Enter your e-mail</label>
<input type="text" class="input-field" id="email" name="email" value="">
</div>
<div>
<label>Type Your Message</label>
<textarea id="message" name="message"></textarea>
</div>
<a id="button-send" href="#" title="Send Email" class="button" style="width:100%;">Send E-Mail</a>
<div id="success">Your message has been successfully!</div>
<div id="error">Unable to send your message, please try later.</div>
</form>
答
我刚刚花了一些时间解决了这个代码问题,我使用了前一段时间从eGrappler下载的HTML5主题,为了节省时间让其他人像我一样在这篇文章中徘徊,示例代码似乎有另一个错误,可能不会工作。
在.js文件它规定
"data: $('#contact_form').serialize(),"
然而,在HTML表单的ID是“联系形式”不带下划线
id="contactform">"
这些都需要相匹配,否则后赢得” t包含姓名,电子邮件地址或消息,并且电子邮件永远不会发送。
希望能够拯救别人从我做的调试..到最后,但它是一个学习曲线!
你是什么意思“踢回不成功的提交”?我建议从mail()调用中删除错误抑制(函数前面的@符号)。另外,什么是操作系统?它与PHP邮件有所不同。 – 2015-03-19 00:48:52
Ubuntu 14.从前端提交表单时,显示“无法发送消息,请稍后再试。”正如我所提到的,我通过用提交类型输入替换当前按钮来测试php脚本,并在调用php脚本之后发送邮件。我有很少的Java经验,所以我很难确定使用ajax时出现问题的地方。 – cassiusclay 2015-03-19 01:03:07
我在我的apache日志中发现了以下错误 PHP解析错误:语法错误,意外'头'(T_STRING)在/var/www/html/send_form_email.php在线80 – cassiusclay 2015-03-19 03:15:58