Почему мой json файл не найден?
У меня есть json файл в папке Content в моем проекте asp.net:
<projectName>
\Content
NBCCJr.json
... и код для доступа к нему:
$.getJSON('~/Content/NBCCJr.json', function (data) {
$.each(data, function(i, dataPoint) {
// Bla
});
});
)
... но ничего не происходит, когда вызывается код; в консоли браузера сказано: "Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден)"
Почему он не найден? Не является ли "тильда ударом имя файла" правильным путем к файлу?
UPDATE
Я также попробовал его с "ударами" назад:
$.getJSON('~\Content\NBCCJr.json', function (data) {
... и получил тот же результат ( "Не удалось загрузить ресурс: сервер ответил статусом 404 (Not Found)" )
ОБНОВЛЕНИЕ 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
У меня появилось информативное сообщение WSOD от Винта Серфа, Тима Бернерса-Ли и/или Эл Гор, говорящего:
Ошибка HTTP 404.3 - не найдено
Запрошенная вами страница не может быть выполнена из-за конфигурации расширения. Если страница script, добавьте обработчик. Если файл нужно загрузить, добавьте MIME-карту.
ОБНОВЛЕНИЕ 4
Благодаря JAM, он теперь работает.
Мне пришлось добавить это в Web.Config:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
Ответы
Ответ 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>
Ответ 2
Решение - вам нужно добавить тип расширения json файла в MIME-типы
Способ 1
Перейдите в IIS, выберите свое приложение и найдите типы MIME
![введите описание изображения здесь]()
Нажмите "Добавить с правой панели"
Расширение имени файла =.json
MIME Type = application/json
![введите описание изображения здесь]()
После добавления типа .json в MIME-типа, Перезапустить IIS и попытайтесь получить доступ к json файлу
Способ 2
Перейдите в web.config этого приложения и добавьте в него строки
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
Ответ 3
Попробуйте помещать файл *.json в webRoot, а не в подпапку. И затем ссылайтесь на него так:
$.getJSON('NBCCJr.json', function (data) {
Это, конечно, требует предыдущего включения и создания объекта системы jQuery из: jquery.min.js или структуры JSON из: json2-1.0.min.js
Ответ 4
Я изменил .json на .txt, и запрос работает нормально. Я не уверен в последствиях .txt может вызвать.