0

我对 ajax 和 ie8 有疑问。我的脚本:

$('#buton').click(function () {
        $('#reader-cont #imgw, #reader-cont #txtw, #reader-cont #datew, #reader-cont #sharemew').html('<div id="ajload"></div>');
        $('#reader').stop().fadeTo(1000, 1).css('z-index', 100);
        var link = $(this).attr('href');
        $.ajax({
            url: link,
            cache:false,
            success: function(data) {
                var imgW = $(data).find("#content #img");
                var txtW = $(data).find(".cont-cont").text();
                var  dateW =   $(data).find("#content #date");
                var  shareW =   $(data).find('#content #shareme')
                $("#reader-cont #imgw").html(imgW);
                $("#reader-cont #txtw").html(txtW);
                $("#reader-cont #datew").html(dateW);
                $("#reader-cont #sharemew").html(shareW);
                alert(txtW);
        }
        });
    });

ff 和 chrome 加载内容没有问题,但 ie8 什么都不加载... 为什么???我知道 ie8 的 cahe 有问题,为此我写了它cache:false,,但没有加载......

更多信息:alert(txtW);返回空字符串...如果我.text()var txtW = $(data).find(".cont-cont").text();警报窗口“对象,对象”中的返回中删除...

更新:我用这个切换脚本:

loadXMLDoc();
    function loadXMLDoc()
            {
            var xmlhttp;
            if (window.XMLHttpRequest)
              {// code for IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp=new XMLHttpRequest();
              }
            else
              {// code for IE6, IE5
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    var data= xmlhttp.responseText;
                    alert(data);
                var imgW = $(data).find("#content #img");
                var txtW = $(data).find(".cont-cont");
                var  dateW =   $(data).find("#content #date");
                var  shareW =   $(data).find('#content #shareme')
                $("#reader-cont #imgw").html(imgW);
                $("#reader-cont #txtw").html(txtW);
                $("#reader-cont #datew").html(dateW);
                $("#reader-cont #sharemew").html(shareW);
                }
              }
            xmlhttp.open("GET",link,true);
            xmlhttp.send();
            }

ie8 中的警报运行完美,但在 div 中我什么都看不到....缓存现在不是问题...问题是在加载的内容中找到选择器...

我在 ie9 ff chrome safari 中对其进行了测试...完美运行...但在 ie8 中没有

更新 2:我知道问题是 .find,因为警报返回数据页面。我尝试使用这种方法,但 ie8 不运行:(

我切换这一行:

var imgW = $(data).find("#content #img");
                var txtW = $(data).find(".cont-cont");
                var  dateW =   $(data).find("#content #date");
                var  shareW =   $(data).find('#content #shareme')

用这条线:

var data= xmlhttp.responseText;
                    var imgW = $(data).children('#wrapper').children('#content').children(' .region').children('#block-system-main').children('.content').children('#img');
                    var txtW = $(data).children('#wrapper').children('#content').children(' .region').children('#block-system-main').children('.content').children(".cont-cont");
                    var  dateW =   $(data).children('#wrapper').children('#content').children(' .region').children('#block-system-main').children('.content').children("#content #date");
                    var  shareW =   $(data).children('#wrapper').children('#content').children(' .region').children('#block-system-main').children('.content').children('#content #shareme');

ff chrome no prob ie8 don't run -.-@!#

4

2 回答 2

0

如果你的服务器IIS为了处理缓存问题IE8
你应该对你的服务器代码做一些工作:

这个链接

将以下代码放入您的Global.asax

Response.Expires = 0
Response.Cache.SetNoStore()
Response.AppendHeader("Pragma", "no-cache")
于 2012-04-06T13:07:59.220 回答
0

请注意,jQuery 正在切换到.done(),如图所示。做一个独立的函数,然后从你的$.ajax(...)

var arrayData=[];
$.ajax({
    ...  
}).done(function(data){
    arrayData[0]=$(data).find("#content #img");
    //add other elements
    updCont(arrayData);
});
function updCont(htmArray){
    $("#reader-cont #imgw").html(htmArray[0];
}

另外,请注意 jQuery 正在切换到 .done(),顺便说一句,它仍然存在相同的 IE8 无法正常工作的问题。我因这种糟糕的行为而失去了DAYS 天。

于 2013-08-13T17:58:45.607 回答