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...