views:

549

answers:

4

While debugging jQuery apps that use AJAX, I often have the need to see the json that is being returned by the service to the browser. So I'll drop the URL for the JSON data into the address bar.

This is nice with ASPNET because in the event of a coding error, I Can see the ASPNET diagostic in the browser:

alt text

But when the server-side code works correctly and actually returns JSON, IE prompts me to download it, so I can't see the response.

alt text

Can I get IE to NOT do that, in other words, to just display it as if it were plain text?

I know I could do this if I set the Content-Type header to be text/plain.

But this is specifically an the context of an ASPNET MVC app, which sets the response automagically when I use JsonResult on one of my action methods. Also I kinda want to keep the appropriate content-type, and not change it just to support debugging efforts.

+2  A: 

FireFox + FireBug is very good for this purpose. For IE there's a developer toolbar which I've never used and intend to use so I cannot provide much feedback.

Darin Dimitrov
yep, I know about the FF plugin that allows the display of application/json as regular text. I specifically wanna know about IE, though.
Cheeso
There's a developer toolbar for IE. By the way here's a nice comparison of different tools for developers : http://elegantcode.com/2009/05/18/firefoxfirebug-vs-ie8-developer-toolbar/
Darin Dimitrov
A: 

You could see the response in Fiddler: http://www.fiddler2.com/fiddler2/

That's nice tool for such things!

asgerhallas
I know about Fiddler, but it seems overkill for something this simple.
Cheeso
+1  A: 

I use Fiddler with JSONViewer plugin to inspect JSON. I don't think it is possible to make IE behave without fiddling with registry perhaps. Here's some information.

Chetan Sastry
+3  A: 

I found the answer.

You can configure IE8 to display application/json in the browser window by updating the registry. There's no need for an external tool. I haven't tested this broadly, but it works with IE8 on Vista.

To use this, remember, all the usual caveats about updating the registry apply. Stop IE. Then, cut and paste the following into a file, by the name of json-ie.reg.

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
“CLSID”=”{25336920-03F9-11cf-8FD0-00AA00686F13}”
“Encoding”=hex:08,00,00,00

Then double-click the .reg file. Restart IE. The new behavior you get when tickling a URL that returns a doc with Content-Type: application/json is like this:

alt text

What it does, why it works:

The 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" action. Basically this registry entry is telling IE that for docs that have a mime type of application/json, just view it in place. This won't affect any application/json documents downloaded via <script> tags, or via XHR, and so on.

The CLSID and Encoding keys get the same values used for image/gif, image/jpeg, and text/html.

This hint came from this site, and from Microsoft's article Handling MIME Types in Internet Explorer .


In FF, you don't need an external add-on either. You can just use the view-source: pseudo-protocol. Enter a URL like this into the address bar:

view-source:http://myserver/MyUrl/That/emits/Application/json

This pseudo-protocol used to be supported in IE, also, until WinXP-sp2, when Microsoft disabled it or security reasons.

Cheeso
+1 for not taking no for an answer. I like.
Sky Sanders
Hey, a few observations that may help your post - http://skysanders.net/subtext/archive/2010/03/23/coerce-windows-and-internet-explorer-ie-to-diplay-json-text.aspx
Sky Sanders