在IE8(CO定制版本),jquery 1.7.2上调用AJAX

时间:2013-08-21 18:09:05

标签: jquery ajax internet-explorer-8

运行IE8(这个自定义版本,以CO结尾)的某些(Windows 7 32位)计算机出现问题... 似乎正在发生的事情是我正在制作的一些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非定制没有问题。

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

感谢一大堆看看这个。

1 个答案:

答案 0 :(得分:0)

想出来......在代码的另一部分中有一些隐藏的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重置设置修复了某些机器上的问题。 无论如何,谢谢所有看过这个的人。