JQuery .AJAX отправить не работает в IE и Chrome - PullRequest
2 голосов
/ 02 декабря 2010

На любой из моих страниц, таких как на этой , когда вы нажимаете кнопку «Задать вопрос» в левом столбце, форма появляется через оверлей jQuery Tools. Вы заполняете форму, она отправляет скрипт PHP (локальный) и, если он проверяет и отправляет, вы получаете либо сообщение с благодарностью, либо сообщение об ошибке, в зависимости от ответа от сервера. Прекрасно работает в FF, Safari и Opera, но не в IE или Chrome. IE и Chrome просто идут и печатают ответное сообщение, которое ищет .ajax на пустой странице с URL-адресом скрипта. У меня должно быть что-то неправильное, так как даже мой междоменный сценарий cURL ajax работает, но не это! Вот код

$(document).click(function() {
        $.validator.methods.equal = function(value, element, param) {
        return value == param;
    };
    var validator = $("#request").bind("invalid-form.validate", function() {
            $("#summary").html("Your form contains " + validator.numberOfInvalids() + " error(s), please fix.");
        }).validate({
            //debug: true,
            errorElement: "em",
            errorContainer: $("#summary"),
            errorPlacement: function(error, element) {
                error.appendTo( element.parent("li"));
            },
            success: function(label) {
                label.text("ok!").addClass("success");
            },
            submitHandler: function(form) {
                $("#processing").show();
            var dataString = $(form).serialize();
                $.ajax({
                type: $("#request").attr('method'),
                url: form.action,
                data: dataString,
                clearForm: true,
                success: function(data) {
                    if (data=="SuccessMail Sent") {
                        $("#formWrap, #supportHdln").hide();
                            $("#thankYou").html('<h2><span>Thank You</span> We have received your request.</h2><p>A Customer Service Representative from NinjaTrader will contact you shortly.</p>').fadeIn("slow");
                        } else {
                            $("#formWrap, #supportHdln").hide();
                            $("#error").html('<h2><span>Uh Oh</span> We are unable to process your request.</h2><p>Please make sure all fields were filled out correctly. If you are still having trouble, please <a href=\"mailto:support@ninjatrader.com?subject=Support Email\">email us</a></p>').fadeIn("slow");
                    }
                    }
                });
            return false;

           },
            rules: {
                    hs_customer_firstname: {
                    required: true,
                    minlength: 2
                },
                    hs_customer_lastname: {
                    required: true,
                    minlength: 2
                },
                    hs_customer_email: {
                    required: true,
                    email: true
                },
                    confirmEmail: {
                    required: true,
                    email: true,
                    equalTo: "#hs_customer_email"
                },
                    hs_customer_phone: {
                    required: false,
                    digits: true
                },
                    hs_category: {
                    required: true      
                },
                    hs_customLargeTextField: {
                    required: true,
                    minlength: 20
                },
                    math: {
                    required: true,
                    equal: <?php echo $randomNumTotal; ?>   
                }
            },

            messages: {
                hs_customer_firstname: {
                    required: "Please Enter Your First Name",
                    minlength: "Your First Name Must be at Least 2 Characters"
                },
                hs_customer_lastname: {
                    required: "Please Enter Your Last Name",
                    minlength: "Your Last Name Must be at Leaset 2 Characters"
                },
                hs_customer_email: {
                    required: "Please enter your email address",
                    email: "Please enter a valid email address"
                },
                confirmEmail: {
                    required: "Please Confirm Your Email Address",
                    email: "Please Enter a Valid Email Address",
                    equalTo: "Please Enter the Same Email Address as Above"
                },
                hs_customer_phone: {
                    digits: "Numbers only"
                },

                hs_category:  {
                    required: "Please Select a Category"
                },
                hs_customLargeTextField: {
                    required: "Please Leave a Comment",
                    minlength: "Your comment must be at least 20 characters"
                },
                math: {
                    required: "Please Solve the Problem",
                    equal: "Please Solve the Problem Correctly"
                }
            }
        });
    });

и вот крошечный PHP-скрипт, который его запускает

<?php

if(empty($_POST['hs_customer_firstname']) || empty($_POST['hs_customer_lastname']) ||
empty($_POST['hs_customer_email']) || empty($_POST['hs_category']) ||
empty($_POST['hs_customLargeTextField']) || empty($_POST['math'])) {
echo ('Success');
}

$headers = 'From: webmaster@ninjatrader.com' . "\r\n" .
       'Reply-To: webmaster@ninjatrader.com' . "\r\n" .

$firstname = $_POST['hs_customer_firstname'] ;
//more like this

mail( "email@domain.com", "Support Request",
//$_POST fields 
"From: $email");
if(mail($firstname, $lastname, $email, $category, $inquiry)) {
echo ('Mail Sent');
} else {
echo ('Error: Mail failed');
}

?>

1 Ответ

0 голосов
/ 02 декабря 2010

Это было связано с проверкой случайных чисел, IE и Chrome не понравилось в коде js.Как только я избавился от этого и удалил валидацию со страницы формы, добавляемой с оверлеем, добавил ее на родительскую страницу в виде отдельного файла JS, который работал.Не уверен, почему случайная сумма не работает.Когда я добавил функцию PHP на родительскую страницу, она не вызвала ошибку JS при проверке, но числа не подтвердились, когда вы добавили их правильно.Ну что ж, выиграй немного, потеряй немного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...