php - 为什么这个注册表单ajax mysql insert在chrome和safari中有效,但在firefox中无效?

标签 php javascript mysql ajax browser

我正在设置一个用户注册页面。它适用于 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/

相关文章:

MySQL 查询选择具有日期范围内的值的所有行

php - 菜鸟: display err_msg on page (pt. 2)

javascript - 使用单个文本框在其他框中输入值

mysql - Laravel 查询生成器。返回嵌套结构化数据

php - MySQL - 如何在选择顶部后选择随机?

javascript - 使用 Proxy 对象检测 Javascript 数组中的更改

php - 在 Laravel 中使用 number_format 方法

php - 如何使 onmouseover 在 mysql 目录中工作

java - 是否可以同时提交两个表格?

Javascript 闭包性能