jquery .load()不在ie8及以下插入数据
我一直在寻找解决方案,但我仍然看到这个错误。
它是我们客户的Expression Engine设置,我们想要实现ajax-navigation。 为此,我们使用默认的$ .load()函数,这在ie9,FF,Safari,Chrome,Opera中完美运行……但它在ie8及以下版本中不起作用。
我已经测试了回调函数,一个是被调用的,数据是发送的,我可以在登录时在控制台中读取它。 但由于某些奇怪的原因,数据未插入。
这是代码:
load_page: function(url, func){ $('#content').load(url+' #content>div', function(data, textStatus, jqXHR){ console.log('page loaded!'); }); }
回调函数中有一大堆额外的代码,但我一直在清理整个javascript / css的一切。 寻找虫子但没有找到任何东西。
根据评论我决定添加url和下载:
- 该网站存在此问题: http : //www.track.be/devo_9836/nl/ee.php
- 一个文件包,有问题: http : //stijnd.be/ie8_load.zip
另一个难题: javascript中有一些奇怪的东西。 即使是谷歌地图api也无法正常运行,这是我第一次使用谷歌地图api时发生这种情况。
编辑:回答
我终于找到了这个问题的答案,感谢@epascarello。 事实上,这是我试图导入的数据的错误。 因为IE8及以下版本不了解HTML5,所以他们会尝试将元素导入到dom中,但在提醒数据时,我看到了以下内容:[object HTMLUnknownElement],[object HTMLUnknownElement],[object HTMLUnknownElement],…
当我更改数据的标记以使用好的旧div而不是article-elements时,一切正常!
我有同样的问题,我注意到如果url返回无效的HTML(例如额外的结束标记),它可以阻止它加载或找到正确的元素。
在我的示例中,我所要做的就是更正URL中的HTML,然后它才能正常工作。
ajax请求缓存在IE8中,所以只是有点神奇
$ .ajaxSettings.cache = false;
在使用加载function之前
http://zacster.blogspot.in/2008/10/jquery-ie7-load-url-problem.html
http://api.jquery.com/jQuery.ajax/
cache(默认值:true,false,对于dataType’script’和’jsonp’)
类型:布尔值
如果设置为false,它将强制浏览器不缓存请求的页面。 注意:将缓存设置为false只能与HEAD和GET请求一起正常工作。 它的工作原理是将“_ = {timestamp}”附加到GET参数。 其他类型的请求不需要该参数,但在IE8中,对已经由GET请求的URL进行POST时除外。
我唯一能看到这个代码错误的是你错过了一个结束括号
load_page: function(url, func){ $('#content').load(url+' #content>div', function(data, textStatus, jqXHR){ console.log('page loaded!'); } // <-- this one });
$.load()
在IE8中有效。 我的猜测是你有一个以前的JS错误,仅在IE8-中触发,这会阻止它正常运行,或被完全调用。
问题是一些function在一个而不是其他function中得到支持。 例如,我个人讨厌的一个问题是如何仅在ie7,8中支持innertext,而不支持fox或chrome。 如果您对http://www.quirksmode.org/dom/w3c_html.html感兴趣, 请参阅下面的兼容性图表。
最重要的是,除非你打算自己更换插件并且你已经尝试过现代化器并且没有帮助,否则你将不得不使用另一种加载数据的方法。 我的建议是使用.html,你不能错,或者在js中自己附加和手工形成html。 更简单始终是最佳解决方案。