我打我的头对这一墙上...
我有以下代码:
$("#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(),并没有做任何隐藏/显示或负载。 我试图消除隐藏和显示,它仍然无法正常工作。
IE报告没有语法错误,甚至DebugBar。 还有什么比我做错了?
你可以看到现场直播http://www.brick-n-mortar.com
Answer 1:
我有同样的问题。 我发现表明,IE浏览器可能会缓存您的代码和许多网站建议的代码追加到
$("#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浏览器不缓存。
见http://zacster.blogspot.com/2008/10/jquery-ie7-load-url-problem.html获取更多信息。
Answer 2:
$ .ajaxSetup({缓存:假});
这将在IE和.load清除缓存()会工作。 我已经试过了。
Answer 3:
如果您正在加载的HTML被打破,jQuery的.load()将不能在IE浏览..这是问题对我来说。 之后,我固定的HTML,一切都在IE伟大的工作也!
Answer 4:
我遇到了这个问题,并终日被抓我的头。 然而终于找到了解决办法,实现了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 =数据; 因为他们的休息。 通过添加引号,我们把它转换成字符串,但使该HTML增加了额外的报价,所以我得到再次摆脱了引号。
寓意:=> IE很烂..没别的..
Answer 5:
我发现.load()函数没有与IE浏览器很好地工作,但使用$获得(),而不是非常完美,例如
var dummy = new Date().getTime();
$.get("home.html" + dummy, function(data) {
$(".islice").html(data);
});
Answer 6:
我发现这个解决办法是工作:
$.ajax("loaded.html", {
cache: false,
success: function(data, textStatus, jqXHR) {
$("#content-1").html(data);
},
dataType:"html"
});
哪里:
- “loaded.html”是的URL文件来加载。
- $(“#含量-1”)是将包含加载的数据(和脚本)的元素。
Answer 7:
我有同样的问题,IE9。
所有Ajax请求默认默默死去。 通过使用http://api.jquery.com/ajaxError/我能够通过登录异常消息,以确定错误的类型:用代码c00ce56e错误。
事实证明,这意味着所述响应不被传递UTF-8编码 ,因为它应该是响应于Ajax请求。
原来我在一个打字错误header('Content-type: text/html; charset=utf-8');
Answer 8:
我认为失败的原因是不明确的编码问题。 尝试显式指定响应编码(即,在HTTP头中的字符集),是这样的:
<meta charset="utf-8">
Answer 9:
该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;
});
为了详细调试这个,看看萤火虫 。
Answer 10:
玉家伙...我有同样的问题,即8岁以上。 这是我的解决方案,希望它可以帮助别人:
1)首先,是相当困难的在IE中调试AJAX。 为什么? 控制台是没有超出该商标,但有另一个更大的问题 - 缓存。 第一次加载一些错误它停留在缓存中。 比你花2小时固定问题,看到同样的结果(当你做这第1次)。 由于这篇文章(和discusion): http://zacster.blogspot.cz/2008/10/jquery-ie7-load-url-problem.html我定制了自己的Ajax调用是这样的:
$(容器).load(链接+ '?随机=' +的Math.random()* 99999 + '员额列表里',函数(){//做一些东西}
随机URL的伟大工程
2)@Neno是正确的! IE与HTML中的错误问题。 验证您的加载HTML http://validator.w3.org/
Answer 11:
为了防止其IE浏览器窃听上,一个的Math.random()参数添加到它,所以它不会使用此unrelevant缓存...
Answer 12:
我有一个类似的问题,并能使其工作是这样的:
.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();
});
Answer 13:
你.load()
荷兰国际集团到一个<table>
嗯......也许推.islice
类升了一级,到<td>
或者一个<div>
之间...
(不,这是必然的问题,但它是一个方法可行......)
Answer 14:
我有同样的问题,为我的工作增添头
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
Answer 15:
如果负载是用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...
文章来源: jQuery's .load() not working in IE - but fine in Firefox, Chrome and Safari