Чому мій файл json не знайдено?


85

У мене є файл json у папці Content у моєму проекті asp.net:

<projectName>
    \Content
        NBCCJr.json

... та код доступу до нього:

$.getJSON('~/Content/NBCCJr.json', function (data) {
    $.each(data, function(i, dataPoint) {
        // Bla
      });
  });
)

... але при виклику коду нічого не відбувається; консоль браузера говорить: "Не вдалося завантажити ресурс: сервер відповів статусом 404 (не знайдено)"

Чому його не знайшли? Чи не правильний шлях до файлу "tilde whack filename"?

ОНОВЛЕННЯ

Я також спробував із "ударами" назад:

$.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

Я отримав інформативне повідомлення WSOD від Vint Cerf, Тіма Бернерса-Лі та / або Ела Гора:

Помилка HTTP 404.3 - не знайдено Сторінку, яку ви запитуєте, не можна обслуговувати через конфігурацію розширення. Якщо сторінка є сценарієм, додайте обробник. Якщо файл потрібно завантажити, додайте карту MIME.

ОНОВЛЕННЯ 4

Завдяки JAM він зараз працює.

Мені довелося додати це до Web.Config:

  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
  </system.webServer>

Не хвилюйтеся про код зараз, подивіться, чи зможете ви знайти файл у своєму браузері для початку
Lee Taylor

З цієї причини я прокоментував весь код після показаного рядка. IOW, функція порожня.
Б. Клей Шеннон

Вам вдалося показати json у своєму браузері? тобто розміщення URL-адреси безпосередньо в адресному рядку?
Lee Taylor

@greg: Що це "стиснуло"?
Б. Клей Шеннон

2
Оновлення 4 вирішено для мене! Thks \ o /
rodrigorf

Відповіді:


97

Ви пробували видалити ~?

Як і в:

$.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? Ви пробували перейти до файлу безпосередньо у своєму браузері? Чи папка Вміст знаходиться у корені вашого веб-проекту?
JAM

Так, пост говорить про це. Перегляньте мої оновлення. Так, Вміст - це папка першого рівня, як зазначено в оригінальній публікації.
Б. Клей Шеннон

Погляньте на цю публікацію .
JAM

Якщо ви додасте вказаний тип mime web.config, у вас все буде добре :)
ЯМ

22

Рішення полягає в тому, що вам потрібно додати тип розширення файлу json у типи MIME

Спосіб 1

Перейдіть до IIS, виберіть свою програму та знайдіть типи MIME

введіть тут опис зображення

Натисніть Додати з правої панелі

Розширення імені файлу = .json

Тип MIME = application / json

введіть тут опис зображення

Після додавання .json типу файлу в MIME типів , Restart IIS і спробувати файл JSON доступу


Спосіб 2

Перейдіть до web.config цієї програми та додайте в неї ці рядки

 <system.webServer>
   <staticContent>
     <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
 </system.webServer>

2

Спробуйте помістити файл * .json у webRoot, а не у підпапку. А потім посилайтеся на нього як:

$.getJSON('NBCCJr.json', function (data) {

Це, звичайно, вимагає попереднього включення та створення екземпляра системного об'єкта jQuery з: jquery.min.js або структури JSON з: json2-1.0.min.js


1

Я змінив .json на .txt і запит працює нормально. Я не впевнений у наслідках, які може спричинити .txt.


1

Якщо ви використовуєте ASP.NET Core, просто вставте файл, wwwrootале якщо ви використовуєте ASP.NETфреймворк, це дозволяє розширення JSON з web.config наступним чином:

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

і

<location path="Content">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.