我正在设置一个用户注册页面。它适用于 Chrome 和 Safari,但不适用于 Firefox(最新的 Mac 版本)。我在本地从事 MAMP 工作。
预期输出:
- 点击提交按钮后发送 Ajax 请求。
- 如果用户名可用,则将用户名、密码、电子邮件插入到 mysql 表中。成功:隐藏的div“您已注册”出现。
- 否则,隐藏的div“出现用户名不可用”
实际输出:
Chrome 和 Safari 中的输出符合预期。
在 Firefox 中,表中不会插入任何内容。不会显示隐藏的 div,而是重新加载整个网页。
为什么下面的代码会产生这些不同的结果?
Javascript
$(function() {
$("#registersubmit").click(function() {
var dataString = $("#registerclick").serialize();
if (registerclick.user.value == "")
{
$('.error').show();
registerclick.user.focus();
return (false);
}
else
{
$.ajax({
type: "POST",
url: "register.php",
data: dataString,
success: function(reg) {
if (!reg)
{
$('.userexists').hide();
$('.error').hide();
$('.success').fadeOut(200).show();
}
else
{
$('.userexists').show();
}
}
});
}
return false;
});
});
PHP for MYSQL 插入
$user = ($_POST['user']);
$email = ($_POST['email']);
$time = time();
$password = ($_POST['password']);
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
include("config.php");
$sql = "INSERT INTO users (username, password, email,timestamp) VALUES ('".mysql_real_escape_string($user)."','".mysql_real_escape_string($password)."', '".mysql_real_escape_string($email)."', '$time')";
$result = mysql_query($sql);
if (!$result)
{
die(mysql_error());
}
}
假设已做好密码加密和mysql逃逸预防措施。
最佳答案
问题在于
if (registerclick.user.value == "")
Firefox 显然无法处理这个问题,原因我不知道。所以我把它替换为
if (document.registerclick.user.value.length == "")
现在可以了!
关于php - 为什么这个注册表单ajax mysql insert在chrome和safari中有效,但在firefox中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651450/