I've encountered a problem when retrieving a JSONP response from a server in a different domain using IE6.
When I make the same AJAX call using JSONP to a server in the same domain as the web page, all goes well in all browsers (including IE6). However, when I make calls between domains (XSS) using JSONP, Internet Explorer 6 locks up. Specifically, the CPU spikes to 100% and the 'success' callback is never reached. The only time I have had success going between domains is when the response is very short (less than 150 bytes typically). The length of the response seems important.
I'm using jQuery 1.2.6. I've tried the $.getJSON() method and the $.ajax(dataType: "jsonp") method without success. This works beautifully in FF3 and IE7. I haven't been able to find anyone else with a similar problem. I thought this type of functionality was fully supported by jQuery in IE6.
Any help is very appreciated,
Andrew
Here is the code for the html page making the AJAX call. Make a local copy of this file (and jquery library) and give it a shot using IE6. For me, it always causes the CPU to spike with no response rendered.
<!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>
Here is the JSON that comes back in the response. According to JSLint, it is valid JSON (once you remove the method call surrounding it). The real results would be different, but this seemed like that simplest example that would cause this to fail. The server is a ASP.Net application returning a response of type 'application/json.' I've tried changing the response type to 'application/javascript' and 'application/x-javascript' but it didn't have any affect. I really appreciate the help.
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"])