我正在尝试阻止我的数据库中的重复提交以获取简报提交表单。我成功阻止了重复的条目,但是我无法修改我的jQuery来打印错误。我已经包含了PHP,只是因为我错过了一些东西......任何帮助都将不胜感激!
jQuery的:
submitHandler: function(form) {
jQuery(form).ajaxSubmit({
success: function() {
$('#newsletterForm').html("<div id='success-message'></div>");
$('#success-message').html("<p><strong>Thank you.</strong> <br/>You've been added to our list and will hear from us soon!</p>");
},
error: function() {
$('#newsletterForm').html("<div id='success-message'></div>");
$('#success-message').html("<p><strong>That email already exists.</strong> <br/>Please enter another email address.</p>");
}
});
}
PHP:
if(isset($_POST['submit'])) {
if(trim($_POST['email']) == '') {
$hasError = true;
} else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
$hasError = true;
} else {
$email = trim($_POST['email']);
}
if(!isset($hasError)) {
$con = mysql_connect("xxx.xxx.xxx.xxx","user","pass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("myDB", $con);
$query = "SELECT COUNT(id) AS mycount FROM newsletter WHERE email = '$email'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if($row['mycount'] == 0) {
$query = "INSERT INTO newsletter (email,dt) VALUES ('$email',NOW())";
mysql_query($query) or die ("Error writing to database");
} else {
echo "I'm sorry our database already contains that email address. Please use a new email address to continue.";
}
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
}
}
答案 0 :(得分:1)
只有在您的AJAX请求失败时才会调用错误(例如404)。
在success: function() { }
内,您需要确定您的PHP脚本返回的是成功消息还是错误消息。最简单的方法是使用JSON而不是纯文本。
要做到这一点,在PHP中而不是回显字符串,请执行..
echo json_encode(array('result'=>'success','response'=>'Everything worked');
或..
echo json_encode(array('result'=>'error','response'=>'Already exists');
然后在你的ajax中,将dataType设置为'json',然后在你的success函数中,你可以访问JSON作为对象。
答案 1 :(得分:0)
为什么不能只打印出发生了什么的JSON表示,而不是回显消息?这将允许您直接在JavaScript中操作对象。
请记住:jQuery不是一种语言。