jQuery的.load()在IE浏览器不工作 - 但罚款的Firefox,Chrome和Safar

2019-05-14 05:28发布

我打我的头对这一墙上...

我有以下代码:

$("#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