jQuery的.load()不能在IE中工作 – 但是在Firefox,Chrome和Safari中很好

我正在对着这个墙头撞墙

我有以下代码:

$("#home").click(function(e) { $(".tabs").attr("src","tabs-home.gif"); $(".islice").hide('fast'); $(".islice").load("home.html"); $(".islice").show('fast'); e.preventDefault(); }); 

它在Firefox,Safari和Chrome中运行得非常好,但IE只运行attr(),不会执行hide / show或load。 我试图删除隐藏和显示,它仍然无法正常工作。

即使使用DebugBar,IE也不报告语法错误。 我可能做错了什么?

你可以在http://www.brick-n-mortar.com看到现场

我有同样的问题。 我发现许多网站都build议IE可能会caching你的代码,并build议附加代码

 $("#home").click(function(e) { $(".tabs").attr("src","tabs-home.gif"); $(".islice").hide('fast'); $(".islice").load("home.html?" + new Date().getTime() ); $(".islice").show('fast'); e.preventDefault(); }); 

这应该确保一个IE不caching。

有关更多信息,请参阅http://zacster.blogspot.com/2008/10/jquery-ie7-load-url-problem.html

$ .ajaxSetup({cache:false});

这将清除caching在IE和.load()将工作。 我试过了。

如果你正在加载的HTML被破坏,jQuery的.load()将不能在IE中工作。这对我来说是个问题。 在我修复了HTML之后,IE中的所有东西都很好用!

我遇到了这个问题,整天都在挠头。 然而,终于find了一个工作,并意识到什么是一个奇怪的IE浏览器。

首先,

 $(".islice").load("home.html"); 

无论我们多努力尝试都不行。 我们将不得不使用

 $.get("home.html", function (data) ....... ); 

我会解释“…..”因为平时

 $.get("home.html", function (data) { $(".islice").html(data); }); // doesn't work 

将无法工作。

代替

 $.get("home.html", function (data) { data = '"' + data + '"'; $(".islice").html(data); var newHTML = $('.islice').html(); $('.islice').html(newHTML.substr(1,newHTML.length-2)); }); // works 

将工作。

说明:=>数据可能有新的行字符。 所以设置innerHTML = data; 因为他们而中断。 通过添加引号,我们将其转换为一个string,但使该HTML添加额外的引号,所以我摆脱了引号再次。

道德:=> IE吸吮..没有别的..

我发现.load()函数在IE中不能很好地工作,但是使用$ .get()可以完美的工作,例如

 var dummy = new Date().getTime(); $.get("home.html" + dummy, function(data) { $(".islice").html(data); }); 

我发现这个解决方法正在工作:

 $.ajax("loaded.html", { cache: false, success: function(data, textStatus, jqXHR) { $("#content-1").html(data); }, dataType:"html" }); 

哪里:

  • “loaded.html”是要加载的文件的URL。
  • $(“#content-1”)是将包含加载的数据(和脚本)的元素。

我有与IE9相同的问题。

所有的Ajax请求默认默默死亡。 通过使用http://api.jquery.com/ajaxError/,我可以通过loggingexception消息来确定错误的types:代码为;c00ce56e的错误。

事实certificate,这意味着响应没有被通过utf-8编码 ,因为它应该是对ajax请求的响应。

原来,我有一个input错误的header('Content-type: text/html; charset=utf-8');

我觉得这个问题是因为模糊的编码而发生的。 尝试显式指定响应编码(即,HTTP标头中的字符集),如下所示:

 <meta charset="utf-8"> 

e.preventDefault()在IE中没有任何区别 – 你必须使用return false; 阻止事情发生:

 $("#home").click(function(e) { $(".tabs").attr("src","tabs-home.gif"); $(".islice").hide('fast'); $(".islice").load("home.html"); $(".islice").show('fast'); e.preventDefault(); return false; }); 

要详细debugging这个,看看Firebug 。

好吧,大家好,我和ie 8以及老一样有同样的问题。 这是我的解决scheme,希望它有助于某人:

1)首先,在IE中debuggingAjax是相当困难的。 为什么? 控制台不符合标准,但还有一个更大的问题 – caching。 第一次加载错误的东西,它保持在caching中。 比你花费2小时修复问题看到相同的结果(当你这样做第一次)。 感谢这篇文章(和discusion):http: //zacster.blogspot.cz/2008/10/jquery-ie7-load-url-problem.html我定制了我的ajax调用像这样:

$(container).load(link +'?random ='+ Math.random()* 99999 +'.post-list li',function(){//做一些事情}

随机的URL很好

2)@Neno是对的! IE在HTML中有错误。 validation您的加载HTML http://validator.w3.org/

为了防止有IE浏览器的问题,添加一个math.random()参数,所以它不使用这个不相关的caching…

我有类似的问题,并能够使其工作:

.load().html()在IE中不能很好地工作。 特别是如果你没有有效的HTML。

 $("#home").click(function(e) { $(".tabs").attr("src","tabs-home.gif"); $(".islice").hide('fast'); $.ajax({ url: "home.html", success: function(data, textStatus, xhr) { $(".islice")[0].innerHTML = data; } }); $(".islice").show('fast'); e.preventDefault(); }); 

你是.load()到一个<table>

嗯…也许把.islice类升级到<td>或者<div>之间…

(这不一定是问题,但这是一个可能性…)

我有同样的问题,为我的工作加上头

 <meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> 

如果使用PHP进行加载,请重置您的数组值。 例如:

 $result = ''; // do this $row = ''; // do this $data = ''; // IMPORTANT Kills odd behavior CACHE FOR IE $result = mysql_query("your sql here"); while ($row = mysql_fetch_array($result)){ $data[] = $row ..... blah blah blah...