繁体   English   中英

jQuery的.load()在IE中不起作用 - 但在Firefox,Chrome和Safari中都很好

[英]jQuery's .load() not working in IE - but fine in Firefox, Chrome and 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()并且不执行隐藏/显示或加载。 我尝试删除隐藏和显示它仍然无法正常工作。

IE报告没有语法错误,即使使用DebugBar也是如此。 我能做错什么?

您可以在http://www.brick-n-mortar.com上查看实际网站

我有同样的问题。 我发现的许多网站都建议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

$ .ajaxSetup({cache:false});

这将清除IE中的缓存和.load()将起作用。 我试过了。

如果您正在加载的HTML被破坏,jQuery的.load()将无法在IE中运行..这对我来说是个问题。 修复HTML之后,IE中的一切都很棒!

我遇到了这个问题,整天都在摸不着头脑。 然而,终于找到了一个解决方案,并实现了一个怪异的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糟透了..没有其他..

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

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

哪里:

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

我发现.load()函数与IE不能很好地工作,但使用$ .get()代替完美,例如

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

我认为问题的出现是因为编码模糊。 尝试显式指定响应编码(即HTTP标头中的字符集),如:

<meta charset="utf-8">

我和IE9有同样的问题。

默认情况下,所有ajax请求都以静默方式死亡。 通过使用http://api.jquery.com/ajaxError/,我能够通过记录异常消息来确定错误类型:代码为c00ce56e的错误。

事实证明,这意味着响应没有被传递utf-8编码 ,因为它应该响应ajax请求。

结果我在header('Content-type: text/html; charset=utf-8');输入了错误header('Content-type: text/html; 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;
});

要详细调试,请查看Firebug

好的...我有同样的问题,即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/

我遇到了类似的问题,并且能够以这种方式工作:

.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();
});

为了防止对IE进行窃听,请向其添加math.random()参数,以便它不使用此不相关的缓存...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM