【问题标题】:IE Compatibility Issue Dynamic Loading Jquery AjaxIE 兼容性问题 动态加载 Jquery Ajax
【发布时间】:2013-02-26 07:26:16
【问题描述】:

我正在使用 Jquery Ajax 生成动态垂直菜单。

该代码在 Chrome、Firefox 上运行良好,但无法使用 IE 加载。我是 Web 开发和 IE 浏览器兼容性问题的新手。

演示链接位于 pumpit.in 查看左侧菜单中的加载程序。它没有出现在 IE 中。如果你重新加载链接,它可能会来。

使用的js代码是:

$.ajax({

    type: "POST",
    url: "Index.aspx/wmCommSubComm",
    data: jsonData,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: false,
    cache: false,
    beforeSend: function () {
        // this is where we append a loading image
        $('#container_leftns').html('<img src="/images/loading123.gif" alt="Loading..." />');
        //return false;
    },
    success: function (msg) {
        //retData = msg.d;
        $('#container_leftns').html(msg.d);
        return false;
    },
    error: function () {
        // failed request; give feedback to user
        //$('#Attri_left-div').html('<p><strong>Oops!</strong> Try that again in a few moments.</p>');
    }
});

如果有人可以指导我,那将非常有帮助。

【问题讨论】:

  • 您是在尝试检索子域或跨域中的数据吗?
  • 你已经包含了 js/jquery-1.8.0.min.js 两次,尝试删除一次。
  • IE版本.....6,7,8,9,10.......?
  • @james :是的,数据来自跨域。
  • @Derek :我会尝试删除重复的条目,但这是原因吗,因为加载程序 gif 也没有在 IE 中显示。

标签: javascript jquery internet-explorer browser compatibility


【解决方案1】:

读取 ajax 调用的结果后,您将返回一些 HTML5 元素,例如“section”。它在 Firefox/Chrome 和 IE9 中运行良好。但是,低于 IE9 的版本不支持 HTML5 标签。他们无法识别 HTML5 标签。请注意,IE9 并不支持所有 HTML5。参考:HTML5 tags in IE9

对于低于 IE9 的版本,您可以通过包含 javascript fix html5shim / from github html5shiv 来帮助他们识别 HTML5 标签。
-或-
改为将 HTML5 标记更改为 div。


关于修复加载图像,我想我们会解决这个问题。

HTML - 将加载图像预加载到容器中并显示它

<div id="container_leftns_loading" class="container_leftns">
    <img src="http://pumpit.in/images/loading123.gif" alt="Loading..." />
</div>
<div id="container_leftns"></div>

JavaScript

$.ajax({
    type: "POST",
    url: "Index.aspx/wmCommSubComm",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: false,
    cache: false,
    beforeSend: function () {
        // use show instead and clear the leftns container
        $('#container_leftns_loading').show();
        $('#container_leftns').html('');
        //return false;
    },
    success: function (msg) {
        // hide the loading image when success
        $('#container_leftns_loading').hide();
        $('#container_leftns').html(msg.d);
        return false;
    },
    error: function () {
        // failed request; give feedback to user
        //$('#Attri_left-div').html('<p><strong>Oops!</strong> Try that again in a few moments.</p>');
    }
});

【讨论】:

  • 感谢您的回复,我尝试使用 html5shiv 但它不起作用。加载之前应该出现的加载器图像也丢失了。我试图将部分更改为 div 并让您知道结果。如果有更多建议,请告诉我。
  • 我也把section改成了div,没变。我已经上传了更新的代码。任何帮助将不胜感激。问题还在于加载器 gif 也没有出现,这在 chrome 和 firefox 中可见。
  • 添加了一个变通方法修复,看看它是否可以修复 IE 中的问题。
  • 感谢 Derek,它修复了图像加载问题,但动态内容没有出现。我还删除了双 jquery 下载。我已经在服务器上上传了最新的代码。还有另一种不稳定的行为。如果您第一次打开,菜单会被加载,但如果您刷新它,之后它不会加载。谢谢您的帮助。希望大家多多指教。
  • 我可以知道设置async:false的原因吗?如果你想要一个异步请求,它应该是真的。
猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 2012-06-09
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2011-05-04
相关资源
最近更新 更多