【问题标题】:Issue with AJAX calls on IE8 (CO customized version), jquery 1.7.2IE8(CO 定制版)、jquery 1.7.2 上的 AJAX 调用问题
【发布时间】:2013-08-22 23:44:56
【问题描述】:

我对一些运行 IE8 的(Windows 7 32 位)机器有疑问(这个定制版本,以 CO 结尾)... 似乎正在发生的事情是我正在进行的一些 ajax 调用没有返回。他们不会引发错误或成功,他们只是不会回来进行处理。 实际上,我收回了,他们确实这样做了(Fiddler 看到一切都回来了),但似乎与调用相关的 ajax 事件没有被触发。

这是应该能够捕获任何错误或成功的代码。我使用延迟来处理屏幕上显示的微调器,以提供有关正在下载的数据的反馈。同样,我使用 jquery 1.7.2。

$(document)
    .ajaxSend( function(e,xhr,opt) {
      //for each xhr send, there will be an error or success
      //we will hide the spinner in the .always event
      var prom = xhr.promise();
      prom.always(function() {
            commons.ajaxSessionCounts -= 1;
            //console.log(opt.url + "~~~RESPONSE");
            if ( commons.ajaxSessionCounts <= 0 ) {
                if (commons.ajaxSpinner == "nonblock") {                
                    $("#ajaxSpinnerImage").hide();
                } else {
                    $.unblockUI();            
                }              
        }
      }).fail(function(jqXHR, textStatus, data) {
        var errorDetail = jqXHR.responseText;
        var errorHTML =
                "Error calling " + opt.url 
                + "<BR/>"
                + (textStatus || 'Unknown')
                + ": "
                + (data || 'missing data')
                + " - "
                + jqXHR.statusText
                + "<BR/>" + errorDetail;
        ShowMessage("AJAX ERROR", errorHTML, true);
      });

      commons.ajaxSessionCounts += 1;

      if (commons.ajaxSpinner == "nonblock") {
        $("#ajaxSpinnerImage").show();                  
          //console.log(opt.url + "~~~REQUEST");
      } else {
          $.blockUI({ 
              theme: true,                  
              baseZ: 15001,
              message: '<h3 style="text-align: center">' + 
                  '<img src="../resources/lib/images/ajax-loader.gif" />' + 
                  '<br>Please wait...</h3>' +
                  (opt.xhrFields && opt.xhrFields.displayMsg ? '<br>' + opt.xhrFields.displayMsg : '')
                  });            
      }
});

在某些机器上,我们可以从 IE 工具菜单运行重置 IE 设置,从而解决了问题。不要问为什么,我不知道。但是,在其他一些机器上,该解决方案不起作用。

IE11、IE10、IE9、Chrome、Opera 运行代码没有问题。另外,非定制的IE8也没有问题。

我花了几个小时试图弄清楚发生了什么。欢迎提出任何建议。

非常感谢您查看此内容。

【问题讨论】:

  • 是否总是发生回调,即使您遇到问题?我没有看到你在哪里绑定到成功处理程序。
  • 当它不起作用时,您是否甚至到达这一行:var prom = xhr.promise();
  • 不,回调并不总是发生......我在页面初始化时有 20 个 ajax 调用,17 个工作(回调发生)和 3 个不工作(没有被触发)跨度>
  • 如果根本没有触发任何事情,那么一定是发生了 javascript 错误,使用浏览器的控制台应该很容易看到。
  • 所有调用都会发生 ajaxSend...其中一些调用不会触发返回(回调)...页面上的效果是 ajaxSessionCounts 永远不会回到 0,因此微调器显示永远......代码完成执行......UI变得响应......然后,当我继续在UI中工作时,另一组ajax调用将起作用,然后另一组调用失败......

标签: jquery ajax internet-explorer-8


【解决方案1】:

想通了...在代码的另一部分中存在一些隐藏的 javascript 错误,导致 ajax 事件不再触发... 关于 javascript 错误最有趣的一点是,当 Internet Explorer 中的“禁用脚本调试”选项关闭时,它们不会冒泡被捕获。

此处描述了实际的 javascript 错误问题(44,000 个结果): http://www.bing.com/search?q=innertext+vs+textcontent&qs=AS&form=QBRE&pq=innertext&sc=8-9&sp=3&sk=AS2

我仍然不明白为什么运行 IE 重置设置可以解决某些机器上的问题。 无论如何,感谢所有查看此内容的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    相关资源
    最近更新 更多