这是ajax调用:
function loadContent( url ) {
jQuery.ajax({
url: url,
success: function(data)
{
// set content
jQuery("#overlayDiv").html(data);
// hide loading spinner
jQuery("#overlayCleared").hide();
}
});
}
它在除IE之外的所有其他浏览器中都可以正常工作,其中div仍然是空的.. :(
我正在使用的CSS是:
div#overlayDiv {
overflow: auto;
position: relative;
height: 95%;
}
div.video_overlay { /* this class will be added to the div using jQuery */
padding-left: 0px;
width: inherit;
top: 35px;
}
我该怎么办?
非常感谢
答案 0 :(得分:1)
实际上,还有可能遇到IE Ajax缓存问题,其中IE倾向于缓存来自GET请求的结果。请参阅http://ajaxian.com/archives/ajax-ie-caching-issue。
解决方案是使用POST(注意:jquery默认为GET)
答案 1 :(得分:0)
我几天前遇到了同样的问题,我只是做了这个改变,它解决了这个问题。
(*考虑url指向localhost) 确保您的网址在例如
上进行测试时指向127.0.0.1使用------> http://127.0.0.1/ 而不是----> http://localhost/
答案 2 :(得分:0)
我刚刚为需要IE8兼容性的大型HTML5应用程序解决了同样的问题。 Ajax调用返回的HTML非常复杂,包含带有大量JQuery和独立JavaScript代码的SCRIPT标记。
除了众所周知的IE缓存问题(以及其他一些问题)之外,这种问题的关键还在于IE在将dinamic HTML内容加载到任何元素时非常挑剔,在我的情况下它是一个DIV。 IE不仅会挑剔,而且会显示一种随机行为,比如呈现返回HTML的一部分,或者根本没有任何明显的部分呈现HTML和最终发现的编码问题之间的关系。
最重要的是,它不会引发任何HTML编码错误,这使得它成为调试此类场景的真正难题。在我的情况下,我别无选择,只能重复90年代的调试技术。我通过在此浏览器的检查视图中复制节点代码从Chrome中获取返回的HTML代码,将其放入一个平面的.html文件中,并使用此服务器端代码从平面文件中读取代码。
$myfile = fopen("flatfile.html", "r") or die("Unable to open the file");
echo fread($myfile,filesize("flatfile.html"));
fclose($myfile);
从那时起使用返回的代码并将其输入到容器对象中,首先将其分成两部分(让每个部分自己成为一段连贯的代码),看看这两部分的哪一部分被渲染,哪些不是以及每个部分等等,直到找到有问题的代码。
需要注意的一件重要事情是IE8无论HTML和Javascript的混合程度如何都会有效,您只需要痛苦地调试代码即可。如果我这样说是因为你会发现很多帖子说明IE7,8无法处理复杂的Ajax返回代码,或者JQuery的.html()属性在这种情况下无法工作。这不是真的,花点时间,你会发现问题所在,不要放弃。