jquery .load()不在ie8及以下插入数据

时间:2012-01-19 14:38:52

标签: javascript jquery ajax internet-explorer

我一直在寻找解决方案,但我仍然看到这个错误。

这是我们客户的Expression Engine设置,我们希望实现ajax-navigation。为此,我们使用默认的$ .load()函数,这在ie9,FF,Safari,Chrome,Opera中完美运行......但它在ie8及以下版本中不起作用。

我测试了回调函数,一个是IS被调用,数据被发送,我可以在登录时在控制台中读取它。但由于某些奇怪的原因,数据未插入。

以下是代码:

load_page: function(url, func){
    $('#content').load(url+' #content>div', function(data, textStatus, jqXHR){
        console.log('page loaded!');
    });
}   

回调函数中有一大堆额外的代码,但我一直在清理整个javascript / css的一切。寻找虫子但没有找到任何东西。

根据评论我决定添加网址和下载:

另一个难题: javascript中有一些奇怪的东西。即使是google maps api也无法正常运行,这是我第一次使用google maps api时发生这种情况。

编辑:已回答

我终于找到了这个问题的答案,感谢@epascarello。事实上,我试图导入的数据是错误的。因为IE8&下面不了解HTML5他们会尝试将元素导入到dom中,但在提醒数据时我看到以下内容:[object HTMLUnknownElement],[object HTMLUnknownElement],[object HTMLUnknownElement],...

当我更改数据的标记以使用好的旧div而不是article-elements时,一切正常!

5 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,我注意到如果url返回无效的HTML(例如额外的结束标记),它可以阻止它加载或找到正确的元素。

在我的示例中,我所要做的就是更正URL中的HTML,然后才能正常工作。

答案 1 :(得分:2)

ajax请求缓存在IE8中,所以只是一点魔力

$。ajaxSettings.cache = false;

使用加载功能

之前

http://zacster.blogspot.in/2008/10/jquery-ie7-load-url-problem.html

http://api.jquery.com/jQuery.ajax/

缓存(默认值:true,false,对于dataType'script'和'jsonp') 类型:布尔

如果设置为false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为false只能与HEAD和GET请求一起正常工作。它的工作原理是将“_ = {timestamp}”附加到GET参数。其他类型的请求不需要该参数,但在IE8中,当对已经由GET请求的URL进行POST时,该参数除外。

答案 2 :(得分:1)

我唯一能看到这段代码的错误就是你错过了一个结束括号

load_page: function(url, func){
     $('#content').load(url+' #content>div', function(data, textStatus, jqXHR){
           console.log('page loaded!');
     } // <-- this one
}); 

答案 3 :(得分:0)

IE8中的

$.load() 工作。我的猜测是你有一个以前的JS错误,仅在IE8中触发,这会阻止它正常运行,或被完全调用。

答案 4 :(得分:-1)

问题是某些功能在一个而不是其他功能中得到支持。例如,我个人的讨厌之一是如何仅在ie7,8中支持innertext,而不支持fox或chrome。如果您对http://www.quirksmode.org/dom/w3c_html.html感兴趣,可以使用以下兼容性图表。

最重要的是,除非你打算自己更换插件并且你已经尝试过现代化器并且没有帮助,否则你将不得不使用另一种加载数据的方法。我的建议是使用.html,你不能错,或者在js中自己附加和手工形成html。更简单始终是最佳解决方案。