JQuery JSONP issue in IE6

I ran into a problem while getting a JSONP response from a server in another domain using IE6.

When I make the same AJAX call using JSONP on a server in the same domain as the web page, everything goes well in all browsers (including IE6). However, when I make cross-domain calls (XSS) using JSONP, Internet Explorer 6 blocks. In particular, the processor reaches 100%, and the callback to "success" is never achieved. The only time I have had success between domains is when the answer is very short (usually less than 150 bytes). The length of the response seems important.

I am using jQuery 1.2.6. I tried the $ .getJSON () method and the $ .ajax (dataType: "jsonp") method without success. This works great in FF3 and IE7. I could not find anyone else with a similar problem. I thought this type of function was fully supported by jQuery in IE6.

Any help is greatly appreciated

Andrew


Here is the html page code calling the AJAX call . Create a local copy of this file (and the jquery library) and take a snapshot using IE6. For me, this always makes the processor splash unanswered.

<!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 returns in response. According to JSLint, this is really JSON (after removing the method call that surrounds it). The actual results will be different, but it was like the simplest example that would lead to failure. The server is an ASP.Net application that returns a response of type "application / json". I tried changing the response type to "application / javascript" and "application / x-javascript", but that did not 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"]) 
+4
source share
4 answers

you will not like this answer, but I'm sure it is on your server side.

That's why:

I recreated your script, and when I run with your JSONP responder, I get IE6, as you explained.

However, when I change the JSONP responder to my own code (exactly the same output as you indicated above), it works without any problems (in all browsers, but especially in IE6).

In this example, I laughed:

http://jsbin.com/udako (for editing http://jsbin.com/udako/edit )

Callback clicks http://jsbin.com/rs.php?callback= ?

A small note. At first I suspected the length of the string: I read that the lines in IE have a maximum length of ~ 1 MB, which was what you pressed (I'm not 100% sure if this is the case), but I changed the concatenation to the push array - which is usually faster anyway.

+5
source

It may be completely unrelated, but I just found that in IE6, when the code is run from the onclick event handler, the JSONP callback can never be executed.

The fix for this problem is to attach the code via HREF instead of the click event.

+4
source

Are you checking json on jslint ? If you have ur and include the full jquery lib, I can debug it for you or publish json and I can try to recreate the problem. Just from the information in question, it is difficult to say. I saw some weird things before with actual key names in json, which breaks into ie6.

0
source

Have you tried mime-type: application / x-javascript?

0
source

Source: https://habr.com/ru/post/1277125/


All Articles