尝试在表单提交时发送 AJAX POST。已经有一个代码可以在除 IE 之外的所有浏览器中运行。
工作代码(IE除外)
$('form').one("submit", function(e) {
$.ajax(
{
url : url,
type: "POST",
data : data,
async: false,
complete: function() {
return true;
}
});
});
尝试了几乎所有我能做的事情,比如 onunload 和 onbeforeunload,显然还有一般的 onsubmit( native Javascript 和 jQuery 方法)。 但是 IE 不会等待 AJAX 调用完成并加载表单操作页面。
onbeforeunload 会让它等待,但会带一个对话确认框(我不愿意显示)。
此外,async:false 不适用于 IE。我不能使用 HTTPRequest,因为请求是跨域的。同样,XDomainRequest 是异步的,因此即使这样也没用。
其他方式,如event.preventDefault()回调后不会提交表单。
注意:页面上的表单是在使用原生提交功能验证成功后提交的。我不能弄乱那段代码,因为它属于我们的客户,而且我们正在异步加载我们的代码。
最佳答案
更改提交并放置一个按钮。 并更改事件:
$('#submitbuttonid').on("click", function(e) {
e.preventDefault()
$.ajax(
{
url : url,
type: "POST",
data : data
complete: function() {
$('form').submit();
}
});
});
关于javascript:Internet Explorer 在表单提交/页面卸载之前不发送 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24854636/