jQuery AJAX不能在任何IE中使用,但在Firefox,Opera,Chrome和Safari中都很好用

时间:2011-11-28 23:36:11

标签: jquery validation

我正在客户的网站上工作,这应该只是添加联系表单和验证插件的一秒工作。

我认为一切顺利,直到我进入IE。

所有其他浏览器完美地运行absolutley,但经过数小时的修补后,我有50%修复了IE问题。现在我真的被卡住了。

我花了很长时间才使验证插件按照需要运行,然后才显示出来。

现在在降级到jQuery v1.5.2并使用Validate v1.8之后,错误显示出来,如果阻止了提交。

但是现在它没有提交表格。

以下是我在其他浏览器中运行良好的代码。

<script type="text/javascript">
$(document).ready(function () {
    $("#node").hide();
    $("#success").hide();
    $.ajaxSetup({
        cache: false
    });
    $("#contact_form").validate({
        submitHandler: function (form) {
            var str = $(form).serialize();
            $.ajax({
                type: "POST",
                url: 'http://www.french-tuition.co.uk/proccess_contact.php',
                dataType: 'text',
                cache: false,
                data: 'ajax=true&' + str,
                contentType: "application/x-www-form-urlencoded; charset=utf-8",
                success: function (msg) {
                    $("#node").ajaxComplete(function (event, request, settings) {
                        result = msg;
                        $("#node").html(result);
                        if (msg == 'success') {
                            $("#node").hide();
                            $("#contact_form").fadeOut("slow");
                            $("#success").fadeIn("slow");
                        } else {
                            result = msg;
                            $("#node").html(result);
                            $("#node").fadeIn("slow");
                        }
                    });
                }
            });
            return false;
        }
    });
});
</script>

错误肯定在提交函数处理程序中(我通过添加alert();函数进行测试来检查。我可以在使用alert函数的ajax调用之前,但不能在之后。)

因此,IE和此功能正在发生一些事情

1 个答案:

答案 0 :(得分:3)

为什么要在成功函数中绑定#node上的ajaxComplete处理程序?你不能改变这个:

success: function (msg) {
    if (msg == 'success') {
        $("#node").hide();
        $("#contact_form").fadeOut("slow");
        $("#success").fadeIn("slow");
    } else {
        $("#node").html(msg);
        $("#node").fadeIn("slow");
    }
}