Ajax表单不会在Internet Explorer中发布

时间:2013-02-25 15:45:26

标签: jquery ajax

以下代码在FF和Chrome中运行良好:表单通过Ajax发布,并出现模式窗口。在IE9中,会出现模态窗口,但不会发布表单。

使用Javascript:

$(document).ready(function() {
$(document).ajaxStart(function(){
    $('#thanks').modal();
});

$('.ajaxform').submit(function () {
    $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        dataType: 'html',
        data: $(this).serialize(),
        success: function (data) {},
        error: function () { }
    });
    return false;
});

});

HTML:

<form method="post" action="https://www.example.com/post.php" class="ajaxform">
<label>First name*</label>
                    <input type="text" name="fname" required>

                    <label>Last name*</label>
                    <input type="text" name="lname" required>

                    <label>Email address*</label>
                    <input type="email" name="email" required>

                    <label>Phone number*</label>
                    <input type="tel" name="phone" required>
<input class="btn btn-primary" type="submit" value="Submit Request" role="button" href="#thanks">

2 个答案:

答案 0 :(得分:1)

请问您是否确实在IE中调用了提交事件处理程序?我问的原因是jQuery .submit()文档声明:

  

&#34; JavaScript提交事件在Internet Explorer中不会出现气泡。但是,依赖于事件委托和提交事件的脚本将在jQuery 1.4之后在浏览器中一致地工作,这样可以规范事件的行为。&#34;

因此,根据您使用的jQuery版本,这可能是个问题... 此外,使用Fiddler或控制台检查Ajax调用是否实际离开浏览器可能会提示。

干杯,亚历克斯

答案 1 :(得分:0)

我没有看到你的ajax调用将其变成实际帖子的位置。如果它是get,您可能必须在IE中禁用缓存。 jQuery ajax调用具有以下设置:cache: false

$('.ajaxform').submit(function () {
    $.ajax({
        cache: false,
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        dataType: 'html',
        data: $(this).serialize(),
        success: function (data) {},
        error: function () { }
    });
    return false;
});