到目前为止,我的工作方法是让jQuery对某个Controller执行AJAX调用,返回一个JsonResult – 并且成功时,将JSON存储在一些加载到D3中的Javascript变量中.这一次,我想跳过控制器并直接从App_Data文件夹请求静态.json文件.
我尝试使用var url =“@ Url.Content(”〜/ App_Data / example.json“)”;来抓取.json的相对路径,但是Javascript调试器使我有很多奇怪的正则表达式错误.
我还尝试将文件放入Content文件夹以查看目录名称是否有所不同.
> var path =“@ Url.Content(”〜/ Content / example.json“)”;结果
NetworkError: 404 Not Found – localhost:xxxxx/Content/u.json
> var path = @ Url.Content(“〜/ Content / example.json”);结果
SyntaxError: invalid regular expression flag u: var path = /Content/example.json;
> var json = $.getJSON(“../ Content / example.json”)似乎向正确的目录发送请求,但返回404错误.此外,使用Razor语法指向相对URL工作,但仍然是404s.
> Adding mimeMap info to web.config也没有帮助.
我的问题是:是否可以使用存储在App_Data(或内容目录)中的JSON文件,只使用Javascript / jQuery?在ASP.NET中,只有一种方法可以做到这一点吗?有没有更好的方法完全采取?
解决方法
你可以在任何地方使用它
<configuration> <system.webServer> <staticContent> <mimeMap fileExtension="json" mimeType="application/json" /> </staticContent> </system.webServer> -------All other Settings--- ----Your all other setting------ </configuration>
由于安全限制,无法访问App_Data,但您可以将文件放在应用程序的其他位置.使用jquery函数getJSON()执行此操作是一个示例.
$("document").ready(function() { var jqxhr = $.getJSON("/Content/usa.json",function () { console.log("success"); }) .done(function () { console.log("second success"); }) .fail(function () { console.log("error"); }) .always(function () { console.log("complete"); }); });
快乐编码享受