سؤال

لقد واجهت مشكلة عند استرداد JSONP استجابة من ملقم في مجال مختلف تستخدم IE6.

عندما جعل نفسه اياكس الاتصال باستخدام JSONP إلى ملقم في نفس المجال مثل صفحة ويب, سارت الامور بشكل جيد في جميع المتصفحات (بما في ذلك IE6).ومع ذلك ، عندما جعل المكالمات بين المجالات (XSS) باستخدام JSONP Internet Explorer 6 يحبس.على وجه التحديد, وحدة المعالجة المركزية المسامير إلى 100% و 'النجاح' الاستدعاء هو لم يتم التوصل إليها.إن كان النجاح الذهاب بين المجالات عند الاستجابة قصيرة جدا (أقل من 150 بايت عادة).طول الرد يبدو مهما.

أنا باستخدام مسج 1.2.6.لقد حاولت دولار.getJSON() طريقة دولار.اياكس(نوع البيانات:"jsonp") طريقة دون نجاح.هذا يعمل بشكل جميل في FF3 و IE7.لم أكن قادرة على العثور على أي شخص آخر مع مشكلة مماثلة.ظننت أن هذا النوع من الوظائف بدعم كامل من مسج في IE6.

أي مساعدة جدا تقدير ،

أندرو


هنا هو رمز صفحة html مما يجعل المكالمات اياكس.جعل نسخة من هذا الملف (و مكتبة مسج) و إعطائها بالرصاص استخدام IE6.بالنسبة لي دائما يسبب وحدة المعالجة المركزية إلى ارتفاع مع أي رد المقدمة.

<!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>

هنا هو سلمان أن يعود في الاستجابة.وفقا JSLint, وهو صالح سلمان (بمجرد إزالة استدعاء الأسلوب المحيطة به).النتائج الحقيقية ستكون مختلفة, ولكن هذا يبدو مثل هذا أبسط مثال من شأنه أن يسبب هذا الفشل.الخادم هو ASP.Net تطبيق عودته استجابة من نوع 'application/json.' لقد حاولت تغيير نوع الاستجابة إلى طلب/جافا سكريبت " و "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"])
هل كانت مفيدة؟

المحلول

لن مثل هذا الرد كثيرا, ولكن أنا مقتنع أنه على جانب الملقم.

هنا لماذا:

لقد يعاد السيناريو الخاص بك و عند تشغيل مع JSONP الرد أحصل على IE6 شنقا ، كما وضحت.

ومع ذلك ، عندما أقوم بتغيير JSONP الرد إلى بلدي رمز (بالضبط نفس الإخراج كما كنت تعطي أعلاه) يعمل دون أي مشكلة (في جميع المتصفحات, ولكن بشكل خاص IE6).

وهنا على سبيل المثال لقد سخر معا:

http://jsbin.com/udako (تحرير http://jsbin.com/udako/edit)

الاستدعاء هو ضرب http://jsbin.com/rs.php?callback=?

ملاحظة صغيرة أنا يشتبه في البداية طول السلسلة:لقد قرأت أن السلاسل في أي قد maxlength من ~1Mb وهو ما كنت ضرب (أنا لست متأكدا 100 ٪ إذا كان هذا هو دقيقة), ولكن أنا غيرت سلسلة إلى مجموعة الضغط التي عادة أسرع على أي حال.

نصائح أخرى

قد تكون لا علاقة لها تماما ولكن أنا فقط اكتشفت أن في IE6 ، عندما رمز بدأت من معالج حدث onclick ، JSONP قد لا تنفيذ.

إصلاح هذه المشكلة هو إرفاق رمز طريق HREF بدلا من الحدث click.

هل سلمان صحة في jslint?إذا كان لديك اور و تشمل كامل مسج lib لا يمكن تصحيح ذلك لك أو الرد على سلمان و أستطيع أن حاول إعادة إنشاء المشكلة.فقط من معلومات نظرا لأنه من الصعب جدا أن أقول.لقد رأيت أشياء غريبة قبل الفعلية أسماء المفاتيح في سلمان الذي يكسر على ie6.

هل حاولت mime-type:application/x-جافا سكريبت ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top