views:

425

answers:

4

Please take a look at the html listed below and let me know why IE6 freezes when trying to load the remote script (located at 'http://code.katzenbach.com/Default.aspx'). The script returns JSONP and executes the 'callbackFunction' listed in the header. When it runs correctly, you'll see a pop-up alert showing numbers 1-500. This works fine in FF3 and IE7. I can't understand why it fails in Internet Explorer 6 -the processor gets pegged and everything hangs.

Run it yourself and let me know if you experience the same problem. I've been staring at this problem all day. Thanks for your help.

Andrew

<html>
<head>
    <script type="text/javascript">
    function callbackFunction(Result)
    {
        alert(Result) ;
    }
    </script>
    <script type="text/javascript" src="http://code.katzenbach.com/Default.aspx?callback=callbackFunction&amp;test=true&amp;c=500"&gt;&lt;/script&gt;
</head>
<body>
Here
</body>
</html>
A: 

How is the script called ?-)

roenving
It's called on load. The 'callbackFunction' function is called when the source of the remote script returns.
anschoewe
A: 

The return is of the external script is:

callbackFunction(["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"])

Why do you want to alert this?
What problem are you trying to solve?

roosteronacid
This was my simplest test to demonstrate the problem I was encountering. I'm actually using the remote script for something else. You'll notice, if you shorten the count to 10, it works (c=10)
anschoewe
please try to actually answer the problem rather than pick apart the example given! obviously everyone posts a trivial example of their problem so that people can understand it easier.
nickf
@nickf: I am not trying to be offensive. And no--it's not obvious that everyone dumbs down their code. Not to me at least.
roosteronacid
I will be using a remote script like this to display search results in our site (the results are coming from a different site). A remote script like this returning json is perfect because I can then use jQuery to render the response.
anschoewe
A: 

If you go directly to the script (http://code.katzenbach.com/Default.aspx?callback=callbackFunction&amp;test=true&amp;c=500), you'll see the file (unknown mime type) is not being processed. This is likely due to a problem with your server setup. It doesn't seem to know how to process .aspx and in instead trying to stream out the file.

Diodeus
I'm not sure I follow. This is an asp.net project. It creates a string of numbers and sends it back from the code-behind page.Response.ContentType = "application/json;";string s = jsonpCallback + "(" + ser1.Serialize(results) + ")";Response.Write(s);Response.Flush();Response.Close();
anschoewe
Ah, I was trying to scoop it as regular HTML, just to see what it was sending back. I usually don't encode as application/json to make it easier to debug.
Diodeus
+2  A: 

I took a look with Fiddler and IE6 and was unable to see anything out of the ordinary (besides the fact that it freezes the browser).

The request to http://code.katzenbach.com/Default.aspx?callback=callbackFunction&amp;test=true&amp;c=500 does get made and returns 2909 bytes.

I'd suggest three things:

  1. Remove one of the semi-colons from your Content-Type: application/json;; charset=utf-8 or maybe remove both semi-colons and charset=utf-8 entirely (just to test)
  2. Send a newline character after you're done sending the final ) of callbackFunction
  3. Change it to Content-Type: text/javascript because you really are returning Javascript to the browser, and the other content type might be confusing IE6 (although it is very unlikely).

I'm thinking 1. is most likely. There may be a parsing bug in IE6 that causes it to go into an endless loop when it encounters two semi-colons. Because otherwise there simply isn't any reason why what you are doing should not work.

It also might be worthwhile to try a different MIME type as a test.

Grant Wagner
I appreciate the thoughtful ideas, but they didn't worked. I changed the content type (and removed the extra ';'), but it had no affect. I also tried changing (and removing) and character-encoding but it had no affect. If you change the last parameter of the javascript src to 100, it works. hmmm.
anschoewe