alex alex - 1 year ago 42
jQuery Question

Working with a static .json file located in App_Data?

In my ASP.NET MVC 4 project, I have a

file in my
folder containing geographical data that I want to load up into D3.js.

So far, my working approach has been to have jQuery perform an AJAX call to some Controller which returns a JsonResult - and on success, storing the JSON in some Javascript variable which gets loaded into D3. This time around, I'd like to skip the controller and request a static
file directly from the App_Data folder instead.

I tried grabbing the .json's relative path using
var url = "@Url.Content("~/App_Data/example.json")";
, but the Javascript debugger excoriated me with lots of weird regex errors.

I also tried throwing the file into the Content folder to see if the directory name makes a difference.

  • var path = "@Url.Content("~/Content/example.json")";
    resulted in

    NetworkError: 404 Not Found - localhost:xxxxx/Content/u.json

  • var path = @Url.Content("~/Content/example.json");
    resulted in

    SyntaxError: invalid regular expression flag u: var path = /Content/example.json;

  • var json = $.getJSON("../Content/example.json")
    appears to send a request to the correct directory, but returns a 404 error. Additionally, using Razor syntax to point to the relative URL works, but still 404s.

  • Adding mimeMap info to web.config also didn't help.

My question is: is it possible to work with a JSON file stored in
(or the
directory), using only Javascript/jQuery? In ASP.NET, is there only one way to do this? Is there a better approach to take altogether?

Answer Source

The issue was being caused by a problem with IIS Express, and this post helped me resolve the issue. I navigated to


and added

<mimeMap fileExtension=".json" mimeType="application/json" />

to the <staticContent> section in there. It wasn't sufficient to add that line to web.config. So it is possible to work with a static .json file stored in the ../Content folder.