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 実行しない -.-@!#

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 に答える