以下代码在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">
答案 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;
});