4

IE6を使用して別のドメインのサーバーからJSONP応答を取得するときに問題が発生しました。

JSONPを使用してWebページと同じドメイン内のサーバーに対して同じAJAX呼び出しを行うと、すべてのブラウザー(IE6を含む)ですべてうまくいきます。ただし、JSONPを使用してドメイン間(XSS)で電話をかけると、InternetExplorer6がロックされます。具体的には、CPUが100%に急上昇し、「成功」コールバックに到達することはありません。ドメイン間を移動するのに成功したのは、応答が非常に短い場合(通常は150バイト未満)だけです。応答の長さは重要なようです。

私はjQuery1.2.6を使用しています。$ .getJSON()メソッドと$ .ajax(dataType: "jsonp")メソッドを試しましたが成功しませんでした。これはFF3とIE7で美しく機能します。私は同様の問題を抱えている他の人を見つけることができませんでした。このタイプの機能は、IE6のjQueryによって完全にサポートされていると思いました。

どんな助けでも大歓迎です、

アンドリュー


これは、AJAX呼び出しを行うhtmlページのコードです。このファイル(およびjqueryライブラリ)のローカルコピーを作成し、IE6を使用して試してみてください。私にとって、それは常にCPUをスパイクさせ、応答はレンダリングされません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
    <script type="text/javascript" src="Scripts/jquery-1.2.6.min.js"></script>
    <script type="text/javascript" src="http://devhubplus/portal/search.js"></script>
</head>
<body>
<a href="javascript:test1(500, 'wikiResults');">Test</a>
<div id="wikiResults" style="margin-top: 35px;"></div>

<script type="text/javascript">
    function test1(count, targetId)
    {
        var dataSourceUrl = "http://code.katzenbach.com/Default.aspx?callback=?";
        $.getJSON(dataSourceUrl, {c: count, test: "true", nt: new Date().getTime()}, function(results) {
                var response = new String();
                response += "<div>";
                for(i in results)
                {
                    response += results[i];
                    response += " ";

                }
                response += "</div>";
                $("#" + targetId).html(response);
        });
    }


</script>
</body>
</html>

これが応答で返されるJSONです。JSLintによると、これは有効なJSONです(周囲のメソッド呼び出しを削除すると)。実際の結果は異なりますが、これは失敗の原因となる最も単純な例のように見えました。サーバーは、タイプ'application/json'の応答を返すASP.Netアプリケーションです。応答タイプを「application/javascript」および「application/x-javascript」に変更しようとしましたが、効果はありませんでした。私は本当に助けに感謝します。

jsonp1222350625589(["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18"

,"19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38"

,"39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58"

,"59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78"

,"79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98"

,"99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115"

,"116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132"

,"133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149"

,"150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166"

,"167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183"

,"184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200"

,"201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217"

,"218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234"

,"235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251"

,"252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268"

,"269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285"

,"286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302"

,"303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319"

,"320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336"

,"337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353"

,"354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370"

,"371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387"

,"388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404"

,"405","406","407","408","409","410","411","412","413","414","415","416","417","418","419","420","421"

,"422","423","424","425","426","427","428","429","430","431","432","433","434","435","436","437","438"

,"439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455"

,"456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472"

,"473","474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489"

,"490","491","492","493","494","495","496","497","498","499"])
4

4 に答える 4

5

この応答はあまり気に入らないでしょうが、サーバー側にあると確信しています。

理由は次のとおりです。

シナリオを再作成しました。JSONPレスポンダーを使用して実行すると、説明したようにIE6がハングします。

ただし、JSONPレスポンダーを自分のコード(上記とまったく同じ出力)に変更すると、問題なく機能します(すべてのブラウザー、特にIE6で)。

これが私が一緒に嘲笑した例です:

http://jsbin.com/udako(http://jsbin.com/udako/editを編集するため

コールバックはhttp://jsbin.com/rs.php?callback=

小さなメモ-最初は文字列の長さを疑っていました:IEの文字列の最大長は最大1Mbで、これがヒットしたものです(これが正確かどうかは100%わかりません)が、連結を次のように変更しました配列プッシュ-とにかく一般的に高速です。

于 2008-10-15T10:40:13.837 に答える
4

まったく関係ないかもしれませんが、IE6 では、コードが onclick イベント ハンドラーから開始されると、JSONP コールバックが実行されない可能性があることを発見しました。

この問題の修正は、クリック イベントの代わりに HREF を介してコードを添付することです。

于 2008-09-30T04:58:21.803 に答える
0

json はjslintで検証しますか? ur があり、完全な jquery lib が含まれている場合は、デバッグするか、json を投稿して、問題の再現を試みることができます。与えられた情報だけでは、それを判断するのは非常に困難です。ie6で壊れるjsonのキーの実際の名前で、以前に奇妙なことを見たことがあります。

于 2008-09-25T07:48:59.357 に答える
0

mime-type: application/x-javascript を試しましたか?

于 2008-10-06T18:04:46.530 に答える