jQuery load()在IE8& 7

时间:2013-01-26 22:08:24

标签: jquery

我运行了这段代码

$j('#nav_menu-2 li li a').bind('click', function(e){ 
    //check when pagination link is clicked and stop its action.
    e.preventDefault();

    //get the href attribute
    var link = $j(this).attr('href');

    $j('#content').load(link + ' #content');
});

它在chrome,ff,ie9中工作正常,但问题从ie8和ie7开始。

我在网上搜索并尝试过这种方式

$j('#content').load(link + '?' + Math.random()*99999 + ' #content');

但它仍然不起作用,内容只是没有显示 this is the url to the site

只需点击第一个蓝框(箭头1),然后尝试更改箭头2和箭头3的内容。

enter image description here

3 个答案:

答案 0 :(得分:2)

这看起来不对:

$j('#content').load(link + '?' + Math.random()*99999 + ' #content');

请改为尝试:

$j('#content').load(link + '?' + (Math.random()*99999).toString());

我不确定您是否需要该随机数,除非您遇到缓存问题。

$j('#content').load(link);

这是一个禁用缓存的解决方案,可以在响应中查找#content,以获得良好的衡量标准(未经测试):

$j.ajax({
    url: link,
    cache: false,
    dataType: "html",
    success: function(data){
        $('#content').html($(data).find('#content').html());
    }
});

答案 1 :(得分:2)

问题是html代码中的一个额外不需要的</div>标记。 所有现代浏览器都能够处理这个问题,但显然ie8和7只是迷失了这些混乱。

答案 2 :(得分:2)

ajax请求缓存在IE8中,所以只是一点魔力

$。ajaxSettings.cache = false;

使用加载功能

之前

http://zacster.blogspot.in/2008/10/jquery-ie7-load-url-problem.html

http://api.jquery.com/jQuery.ajax/

缓存(默认值:true,false,对于dataType'script'和'jsonp') 类型:布尔

如果设置为false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为false只能与HEAD和GET请求一起正常工作。它的工作原理是将“_ = {timestamp}”附加到GET参数。其他类型的请求不需要该参数,但在IE8中,当对已经由GET请求的URL进行POST时,该参数除外。