2

它在这里可用: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 以外的所有浏览器都可以正常工作的具体情况是什么?

4

2 回答 2

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 
于 2013-08-18T18:57:29.027 回答
3

在你的scripts.js文件中

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

这应该是

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

否则事件未定义

于 2013-08-18T18:56:01.687 回答