IE 10, HTML5 and jQuery 2.x - JavaScript runtime error: 'JSON' is undefined
While debugging HTML5 web pages with jQuery based scripts in Visual Studio 2012 using IE 10, if you see an error similar to following:
|
And if you are able to debug the same page in Visual Studio 2012 using the latest versions of any of the following browsers without any issues:
- Opera,
- Chrome,
- Firefox and
- Safari etc.
Then make sure that Compatibility View settings in IE 10 are turned “Off” for the domain (or host name) of the IIS site where your page is hosted. In my case I found that “localhost” was added to Compatibility View, so just removing it from there solved the problem.
For more details on why this is an issue, will recommend reading following MSDN article:
Defining Document Compatibility
Update 18-Aug-2013: Changed the blog title to reflect that this applies only to JQuery 2.x. ['JSON' is undefined] is not an issue with JQuery 1.x.
Following tables further detail out IE 10 behaviour across compatibility modes, settings and jQuery versions:
Comments
Anonymous
May 16, 2013
The comment has been removedAnonymous
May 19, 2013
Thanks Marcus for pointing this out. However, specified meta information will only work provided that site hostname is not already added to Compatibility View list. If the site hostname (localhost in my case) is already added to compatibility view then these meta settings specified inline in the markup of the page doesn't seem to work and you still get the aforementioned error.Anonymous
July 15, 2013
Excellent found! I had the same problem. I update, re-installed and recently install VB2013. I had the same problem that you, so I removed it from the "Compatibility View" and its get fixed. I am wondering now: ¿How its get there?.Anonymous
July 31, 2013
The comment has been removedAnonymous
August 01, 2013
The comment has been removedAnonymous
October 17, 2013
Great article. Useful information. Thanks for Posting. CAVIN IT SOLUTIONSAnonymous
January 28, 2015
Nice article Manish.Anonymous
October 19, 2015
You need to include JSON2 javascript in your code In BundleConfig bundles.Add(new ScriptBundle("~/bundles/PriorsScripts").Include("~/Scripts/json2.js")); In _Layout @Scripts.Render("~/bundles/PriorsScripts")