我正在设置用户注册页面。它适用于Chrome和Safari,但不适用于Firefox(最新的Mac版本)。我在MAMP当地工作。
预期输出:
实际输出:
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;
});
});
用于MYSQL插入的PHP
$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转义注意事项。
答案 0 :(得分:1)
问题在于
if (registerclick.user.value == "")
由于我不知道的原因,Firefox显然无法解决这个问题。所以我用
替换了它if (document.registerclick.user.value.length == "")
它现在有效!
答案 1 :(得分:0)
由于问题仅在于客户端部分,因此您需要检查客户端代码。 为firefox安装firebug并调试FF中的内容。
但是,我可能只是从头顶上给你一个想法。在最新的Firefox中(来自7 th 或8 th 版本),具有一些id
的元素不会自动暴露给具有相同名称的全局变量。
我打赌,你没有自己声明registerclick
变量。
因此,您需要声明此变量:
var registerclick = $('#registerclick').get(0);
或用registerclick
替换代码中的forms.registerclick
或稍微...但无论如何,我希望,你明白了。