email.com使用此HTML代码:
<form id="emailform" name="emailform" method="post" action="" >
<label>Name</label>
<input type="text" name="name" />
<label >Email</label>
<input type="text" name="email" />
<label >Message</label>
<textarea name="message"></textarea>
<div id="errormessage"></div>
<input type="submit" value="send" class="button" />
<input id="hiddenID" type="reset" name="hidden" />
</form>
使用此脚本:
$("#emailform").submit(function(){
$.ajax({
type: "POST",
url: "email.ajax.php",
data: $("#emailform").serialize(),
dataType: "json",
success: function(msg){
$("#errormessage").removeClass('error');
$("#errormessage").addClass(msg.status);
$("#errormessage").html(msg.message);
$("#hiddenID").click();
},
error: function(){
$("#errormessage").removeClass('success');
$("#errormessage").addClass('error');
$("#errormessage").html("There was an error submitting the form. Please try again.");
}
});
return false;
});
和这个php:
<?php
function checkEmail($email){
if(eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email)){
return FALSE;
}
list($Username, $Domain) = split("@",$email);
if(@getmxrr($Domain, $MXHost)){
return TRUE;
} else {
if(@fsockopen($Domain, 25, $errno, $errstr, 30)){
return TRUE;
} else {
return FALSE;
}
}
}
$response_array = array();
if(empty($_POST['name'])){
$response_array['status'] = 'error';
$response_array['message'] = 'Name is blank';
} elseif(!checkEmail($_POST['email'])) {
$response_array['status'] = 'error';
$response_array['message'] = 'Email is blank or invalid';
} elseif(empty($_POST['message'])) {
$response_array['status'] = 'error';
$response_array['message'] = 'Message is blank';
} else {
$body = $_POST['name'] . " sent you a message\n";
$body .= "Details:\n\n" . $_POST['message'];
mail("email@email.com", "Portfolio", $body);
$response_array['status'] = 'success';
$response_array['message'] = 'Email sent!';
}
echo json_encode($response_array);
?>
我收到一条“未捕获的TypeError:无法读取null的属性'状态'错误”成功消息,似乎无法解释原因。它捕获名称错误,但然后不喜欢电子邮件验证。有什么帮助吗?
答案 0 :(得分:0)
以下是创建错误的行:$("#errormessage").addClass(msg.status);
您正在尝试访问status
对象的msg
属性,但错误告诉您msg
不是对象,或者没有名为{{1}的属性}。
在回调函数的第一行上执行status
,以查看实际返回到JavaScript的内容。
答案 1 :(得分:0)
尝试在echo之前添加:
header('Content-type: application/json');
echo json_encode($response_array);