web-dev-qa-db-fra.com

Pourquoi mon fichier JSON n'est pas trouvé?

J'ai un fichier JSON dans un dossier de contenu dans mon projet asp.net:

<projectName>
    \Content
        NBCCJr.json

... et le code pour y accéder:

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

... mais rien ne se passe lorsque le code est appelé; la console du navigateur indique "Échec de chargement de la ressource: le serveur a répondu avec un statut 404 (Introuvable)"

Pourquoi n'est-il pas trouvé? "Tilde whack filename" n'est-il pas la bonne route vers le fichier?

MISE À JOUR

J'ai aussi essayé avec les "coups" à l'envers:

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

... et a obtenu le même résultat ("Impossible de charger la ressource: le serveur a répondu avec un statut de 404 (Introuvable)")

MISE À JOUR 2

Ensuite, je l'ai essayé sans un coup sec comme suit:

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

... et je reçois ce message ambigu dans la console:

*GET http://localhost:9702/Content/NBCCJr.json 404 (Not Found) jquery.js:8724
XHR finished loading: "http://localhost:9702/Content/NBCCJr.json".*

Donc, il n'a pas été trouvé et encore chargé de toute façon?

MISE À JOUR 3

Lorsque j'ai tenté de naviguer dans le fichier dans le navigateur en modifiant:

http://localhost:9702/Default.cshtml

...à:

http://localhost:9702/Content/NBCCJr.json

J'ai reçu un message informatif WSOD de Vint Cerf, Tim Berners-Lee et/ou Al Gore disant:

Erreur HTTP 404.3 - Non trouvée La page que vous demandez ne peut pas être servie en raison de la configuration de l'extension. Si la page est un script, ajoutez un gestionnaire. Si le fichier doit être téléchargé, ajoutez une carte MIME.

MISE À JOUR 4

Grâce à JAM, cela fonctionne maintenant.

J'ai dû ajouter ceci à Web.Config:

  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
  </system.webServer>
84
B. Clay Shannon

Avez-vous essayé d'enlever le ~?

Un péché:

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

Pour permettre à IIS de servir des fichiers JSON, essayez d'ajouter ceci à votre fichier web.config:

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

La solution est que vous devez ajouter le type d'extension de fichier json dans les types MIME

Méthode 1

Allez dans IIS, sélectionnez votre application et recherchez les types MIME

enter image description here

Cliquez sur Ajouter dans le panneau de droite

Extension de nom de fichier = .json

Type MIME = application/json

enter image description here

Après avoir ajouté . Json , tapez le type dans les types MIME , Redémarrez IIS et essayez d'accéder au fichier json


Méthode 2

Allez sur web.config de cette application et ajoutez-y ces lignes

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

Essayez de placer le fichier * .json dans WebRoot et non dans un sous-dossier. Et puis référence comme:

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

Cela nécessite bien sûr l'inclusion et l'instanciation précédentes de l'objet système jQuery à partir de: jquery.min.js ou de la structure JSON à partir de: json2-1.0.min.js

2
Paul Milleson

J'ai changé .json en .txt et la requête fonctionne bien. Je ne suis pas sûr de la conséquence que peut causer le fichier .txt.

1
Pankaj