jQuery .ajax提交无法在IE和Chrome中运行

时间:2010-12-02 02:39:27

标签: jquery ajax

在我的任何页面上,例如this one,当您单击“有问题”按钮左栏时,表单会通过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 :(得分:0)

它与随机数验证有关,IE和Chrome不喜欢js代码。一旦我摆脱了这一点,并从表单页面中删除了带有叠加层的验证,将其作为单独的JS文件添加到父页面中。不知道为什么随机数总计不起作用。当我将PHP函数添加到父页面时,它在验证中没有触发JS错误,但是在正确添加它们时数字没有验证。哦,好吧,赢得一些失去一些。