我正撞在墙上对着这个人......
我有以下代码:
$("#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也是如此。我能做错什么?
查看实际网站答案 0 :(得分:47)
我遇到了同样的问题。我发现的许多网站都建议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。
答案 1 :(得分:16)
$ .ajaxSetup({cache:false});
这将清除IE中的缓存并且.load()将起作用。我试过了。
答案 2 :(得分:13)
如果你加载的HTML坏了,jQuery的.load()将无法在IE中运行。 这对我来说是个问题。修复HTML之后,IE中的一切都很棒!
答案 3 :(得分:6)
我遇到了这个问题,整天都在摸不着头脑。然而,终于找到了解决方法并实现了一个怪异的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;因为他们而休息。通过添加引号,我们将其转换为字符串,但使html添加额外的引号,以便我再次删除引号。
道德:=> IE糟透了..没有别的..
答案 4 :(得分:4)
我发现.load()函数在IE上运行效果不佳,但使用$ .get()却效果很好,例如。
var dummy = new Date().getTime();
$.get("home.html" + dummy, function(data) {
$(".islice").html(data);
});
答案 5 :(得分:4)
我发现这种解决方法有效:
$.ajax("loaded.html", {
cache: false,
success: function(data, textStatus, jqXHR) {
$("#content-1").html(data);
},
dataType:"html"
});
其中:
答案 6 :(得分:3)
我在使用IE9时遇到了同样的问题。
默认情况下,所有ajax请求都以静默方式死亡。通过使用http://api.jquery.com/ajaxError/,我可以通过记录异常消息来确定错误类型:代码 c00ce56e 时出错。
事实证明,这意味着响应未被传递 utf-8编码,因为它应该响应ajax请求。
原来我在header('Content-type: text/html; charset=utf-8');
答案 7 :(得分:3)
我认为问题的出现是因为模糊的编码。尝试显式指定响应编码(即HTTP标头中的字符集),如:
<meta charset="utf-8">
答案 8 :(得分:2)
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;
});
要详细调试,请查看Firebug。
答案 9 :(得分:2)
好的伙计......我和8岁以上的人有同样的问题。这是我的解决方案,希望它对某人有所帮助:
1)首先,在IE中调试ajax非常困难。为什么?控制台没有达到标准,但还有另一个更大的问题 - 缓存。第一次加载错误时它会保留在缓存中。比你花2小时修复问题看到相同的结果(第1次这样做)。感谢这篇文章(和讨论):http://zacster.blogspot.cz/2008/10/jquery-ie7-load-url-problem.html我自定义了我的ajax调用:
$(container).load(link +'?random ='+ Math.random()* 99999 +'。postt-list li',function(){ //做一些事情 }
随机网址效果很好
2)@Neno是对的! IE有HTML错误的问题。验证您的加载HTML http://validator.w3.org/
答案 10 :(得分:1)
为了防止对IE进行窃听,请向其添加math.random()参数,以便不使用此不相关的缓存...
答案 11 :(得分:1)
我遇到了类似的问题,并且能够以这种方式工作:
.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();
});
答案 12 :(得分:0)
你.load()
进入了<table>
?
嗯...也许将.islice
班级提升到一个级别,进入<td>
,或者推动<div>
之间......
(不一定是那个问题,但这是可能的......)
答案 13 :(得分:0)
我有同样的问题,因为我的工作添加了头
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
答案 14 :(得分:-4)
如果使用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...