javascript:Internet Explorer 在表单提交/页面卸载之前不发送 ajax 调用

标签 javascript jquery ajax internet-explorer-8 onbeforeunload

尝试在表单提交时发送 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()回调后不会提交表单。

注意:页面上的表单是在使用原生提交功能验证成功后提交的。我不能弄乱那段代码,因为它属于我们的客户,而且我们正在异步加载我们的代码。

已经检查过的链接: using onbefore unload onbeforeunload with timeout

最佳答案

更改提交并放置一个按钮。 并更改事件:

$('#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/

相关文章:

jQuery 验证不验证

php - 为什么我的注册表单适用于除 Firefox 之外的所有浏览器?

javascript - jQuery AJAX 到 Node 服务器抛出 net::ERR_CONNECTION_REFUSED

无法在 Curl 请求中获取响应错误文本

javascript - 数组中的每个元素同时递增,而实际上只应该递增一个元素

javascript滚动多个div

javascript - 禁用 jQuery 中的按钮,直到所有必填字段都有值(特别是选择)

javascript - 我无法让我的 javascript 数组工作了

javascript - jQuery goToByScroll 偏移量

javascript - 如何从元素中删除定义的文本字符?