我正在为PHP处理脚本做一个AJAX帖子。我正在检查MySQL是否返回任何正在进行注册的行。我遇到的问题 - MySQL快速回显1行然后回显0并继续注册,即使存在0行。为什么我看到1行返回,然后快速纠正自己?
$.ajax({
type: "POST",
data: "username="+$(this).attr('username')+"password="+$(this).attr('email')+$(this).attr('password')+$(this).attr('passconf'),
url: "includes/register.php",
success: function(msg)
{
alert(data);
$("#result").data($data);
}
});
});
PHP代码:
$res = mysql_query("SELECT * FROM users WHERE username = '".$username."'");
if (!$res) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
$num = mysql_num_rows($res);
echo $num;
答案 0 :(得分:2)
您的事件处理程序可能无法阻止默认操作,导致表单被提交两次(一次通过ajax,一次通过常规浏览器表单提交)。尝试像这样返回false:
$(login_form).click(function() {
$.ajax({ ... });
return false;
});
返回false
会阻止默认操作并停止冒泡。如果你想要冒泡仍然适用,你也可以明确地防止这样的默认:
$(login_form).click(function(ev) {
ev.preventDefault();
$.ajax({ ... });
});