为啥找不到我的 json 文件?
Posted
技术标签:
【中文标题】为啥找不到我的 json 文件?【英文标题】:Why is my json file not found?为什么找不到我的 json 文件? 【发布时间】:2013-07-11 16:42:45 【问题描述】:我的 asp.net 项目的 Content 文件夹中有一个 json 文件:
<projectName>
\Content
NBCCJr.json
...以及访问它的代码:
$.getJSON('~/Content/NBCCJr.json', function (data)
$.each(data, function(i, dataPoint)
// Bla
);
);
)
...但是调用代码时没有任何反应;浏览器控制台显示“加载资源失败:服务器响应状态为 404(未找到)”
为什么找不到? “波浪号重击文件名”不是文件的正确路径吗?
更新
我也尝试过用“重击”倒过来:
$.getJSON('~\Content\NBCCJr.json', function (data)
...得到了相同的结果(“加载资源失败:服务器响应状态为 404(未找到)”)
更新 2
然后我尝试了它,因此没有预先设置的重击:
$.getJSON('Content/NBCCJr.json', function (data)
...我在控制台中收到这条模棱两可的消息:
*GET http://localhost:9702/Content/NBCCJr.json 404 (Not Found) jquery.js:8724
XHR finished loading: "http://localhost:9702/Content/NBCCJr.json".*
所以还是没有找到并加载?
更新 3
当我尝试通过更改导航到浏览器中的文件时:
http://localhost:9702/Default.cshtml
...到:
http://localhost:9702/Content/NBCCJr.json
我收到了来自 Vint Cerf、Tim Berners-Lee 和/或 Al Gore 的内容丰富的 WSOD 消息:
HTTP 错误 404.3 - 未找到 由于扩展配置,无法提供您请求的页面。如果页面是脚本,则添加处理程序。如果应该下载文件,请添加 MIME 映射。
更新 4
感谢 JAM,它现在可以正常工作了。
我必须将它添加到 Web.Config:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
【问题讨论】:
暂时先别管代码,看看能不能在浏览器中找到文件开始 出于这个原因,我已经注释掉了显示的行之后的所有代码。 IOW,函数为空。 您是否设法在浏览器中显示 json?即直接将 URL 放入地址栏中? @greg:它“咬紧”了什么? 更新 4 为我解决了!谢谢\o/ 【参考方案1】:您是否尝试过删除 ~
?
如:
$.getJSON('/Content/dumboJr.json', function (data)
$.each(data, function(i, dataPoint)
// Bla
);
);
)
要允许 IIS 提供 JSON 文件,请尝试将其添加到您的 web.config:
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
【讨论】:
是的(现在我有)。这: $.getJSON('/Content/NBCCJr.json', function (data) 给出相同的响应。 是404响应吗?您是否尝试过直接在浏览器中导航到文件? Content 文件夹是否位于 Web 项目的根目录中? 是的,帖子是这么说的。请看我的更新。是的,Content 是一级文件夹,如原帖所示。 看看this post。 如果你添加指定的 web.config mime 类型就可以了:)【参考方案2】:尝试将 *.json 文件放在 webRoot 中,而不是放在子文件夹中。然后像这样引用它:
$.getJSON('NBCCJr.json', function (data)
这当然需要先前包含和实例化来自:jquery.min.js 的 jQuery 系统对象或来自:json2-1.0.min.js 的 JSON 结构>
【讨论】:
【参考方案3】:解决方法是你需要在 MIME Types 中添加 json 文件扩展类型
方法一
转到 IIS,选择您的应用程序并查找 MIME 类型
从右侧面板点击添加
文件扩展名 = .json
MIME 类型 = 应用程序/json
在MIME Types中添加.json文件类型后,重启IIS并尝试访问json文件
方法二
转到该应用程序的 web.config 并在其中添加此行
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
【讨论】:
【参考方案4】:我将 .json 更改为 .txt 并且请求工作正常。我不确定 .txt 可能导致的后果。
【讨论】:
【参考方案5】:如果您使用ASP.NET Core
,只需将文件放入wwwroot
,但如果您使用ASP.NET
框架,则允许从web.config 扩展JSON,如下所示:
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
和
<location path="Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
【讨论】:
以上是关于为啥找不到我的 json 文件?的主要内容,如果未能解决你的问题,请参考以下文章
我在找不到 Swift4 时加载 json 数据时遇到问题,为啥?