为什么我的注册表单在除Firefox之外的每个浏览器中都有效?

时间:2013-08-18 18:53:58

标签: php javascript jquery ajax firefox

可在此处找到:http://syllableapp.com/test

基本上,在Safari,Chrome,Opera,Webkit Nightly等中,表单的工作效果非常出色。在Firefox中,提交它只是...没有做任何事情。这是为什么?

这是我的JavaScript:

$(document).ready(function() {
    $('input[type="submit"]').click(function() {
        event.preventDefault();

        var email = $.trim($('.email').val());
        var emailRegEx = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

        if (email == "" || !emailRegEx.test(email)) {
            $(this).effect("shake", { times:2 }, 75);
        }
        else {
            var data = "email=" + email;

            $.ajax({
                type: "POST",
                url: "register_email.php",
                data: data,
                success: function(data) {
                    if (data == 1) {
                        $('form').hide();
                        $('form').html("<p class='success'>You'll be notified! Welcome aboard.</p>");
                        $('form').fadeIn(300);
                    }
                    else {
                        $('form').hide();
                        $('form').html("<p class='error'>Dang, there was an error. <a href='mailto:me@christianselig.com'>Email me?</a></p>");
                        $('form').fadeIn(300);
                    }
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    alert("Error: " + errorThrown);
                    $('form').hide();
                    $('form').html("<p class='error'>Dang, there was an error. <a href='mailto:me@christianselig.com'>Email me?</a></p>");
                    $('form').fadeIn(300);
                }
            });
        }
    });
});

我的PHP:

<?php
    $db = new mysqli("localhost", "swuclu_emailer", "etreadmill:(", "swuclu_syllable_emails");

    if ($db->connect_error) {
        echo "0";
    }
    else {
        $email = $_POST["email"];

        $stmt = $db->prepare("INSERT INTO emails (email) VALUES (?)");
        $stmt->bind_param("s", $email);
        $stmt->execute();

        echo 1;
    }
?>

除了Firefox之外的每个浏览器到底会发生什么?

2 个答案:

答案 0 :(得分:5)

在页面更改时启用控制台中的错误。

您将看到此错误:

ReferenceError: event is not defined
http://syllableapp.com/test/scripts/scripts.js
Line 3

带您进入代码:

$(document).ready(function() {
$('input[type="submit"]').click(function() {
    event.preventDefault(); //<--- here
看着那个,你看到没有定义事件。因此错误。

所以将变量事件添加到函数参数列表

$('input[type="submit"]').click(function(event) { //<-- added variable 

答案 1 :(得分:3)

在您的scripts.js文件中

$(document).ready(function() {
    $('input[type="submit"]').click(function() {
        event.preventDefault();

这应该是

$(document).ready(function() {
    $('input[type="submit"]').click(function(event) {
        event.preventDefault();

否则事件未定义