Json dosyam neden bulunamadı?


85

Asp.net projemdeki bir İçerik klasöründe bir json dosyam var:

<projectName>
    \Content
        NBCCJr.json

... ve ona erişim kodu:

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

... ancak kod çağrıldığında hiçbir şey olmuyor; tarayıcı konsolu "Kaynak yüklenemedi: sunucu 404 (Bulunamadı) durumuyla yanıt verdi" diyor

Neden bulunamadı? "Tilde vuruş dosya adı" dosyaya giden doğru yol değil mi?

GÜNCELLEME

Ben de tersten vurarak denedim:

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

... ve aynı sonucu aldı (" Kaynak yüklenemedi: sunucu 404 (Bulunamadı) durumuyla yanıt verdi ")

GÜNCELLEME 2

Sonra bunu önceden yapılmış bir vuruş yapmadan denedim:

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

... ve konsolda şu belirsiz mesajı alıyorum:

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

Yani bulunmadı ve yine de yüklendi mi?

GÜNCELLEME 3

Değiştirerek tarayıcıda dosyaya gitmeye çalıştığımda:

http://localhost:9702/Default.cshtml

... için:

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

Vint Cerf, Tim Berners-Lee ve / veya Al Gore'dan bilgilendirici bir WSOD mesajı aldım:

HTTP Hatası 404.3 - Bulunamadı Talep ettiğiniz sayfa, uzantı yapılandırması nedeniyle sunulamıyor. Sayfa bir komut dosyasıysa, bir işleyici ekleyin. Dosyanın indirilmesi gerekiyorsa, bir MIME haritası ekleyin.

GÜNCELLEME 4

JAM sayesinde artık çalışıyor.

Bunu Web.Config'e eklemek zorunda kaldım:

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

Şimdilik kod için endişelenmeyin, başlamak için tarayıcınızda dosyayı bulabilecek misiniz bir bakın
Lee Taylor

Bu nedenle, gösterilen satırdan sonraki tüm kodu yorumladım. IOW, işlev boş.
B. Clay Shannon

Tarayıcınızda json'u göstermeyi başardınız mı? ör. URL'yi doğrudan adres çubuğuna mı ekliyorsunuz?
Lee Taylor

@greg: Neyi "sıktı"?
B. Clay Shannon

2
Güncelleme 4 benim için çözüldü! Thks \ o /
rodrigorf

Yanıtlar:


97

Kaldırmayı denediniz ~mi?

De olduğu gibi:

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

IIS'nin JSON dosyalarını sunmasına izin vermek için bunu web.config dosyanıza eklemeyi deneyin:

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

Evet (şimdi sahibim). Bu: $ .getJSON ['/ Content / NBCCJr.json', function (data) {aynı yanıtı verir.
B. Clay Shannon

404 cevabı mı? Doğrudan tarayıcınızda dosyaya gitmeyi denediniz mi? İçerik klasörü web projenizin kök dizininde mi?
JAM

Evet, gönderi bunu söylüyor. Lütfen güncellemelerime bakın. Evet, İçerik, orijinal gönderide belirtildiği gibi birinci düzey bir klasördür.
B. Clay Shannon

Bir göz atın bu yazı .
JAM

Belirtilen web.config mime türünü eklerseniz sorun olmayacaktır :)
JAM

22

Çözüm, MIME Türlerinde json dosya uzantısı türü eklemeniz gerektiğidir

Yöntem 1

IIS'ye gidin, Uygulamanızı seçin ve MIME Türlerini Bulun

görüntü açıklamasını buraya girin

Sağ panelden Ekle'ye tıklayın

Dosya Adı Uzantısı = .json

MIME Türü = uygulama / json

görüntü açıklamasını buraya girin

MIME Türlerine .json dosya türünü ekledikten sonra , IIS'yi yeniden başlatın ve json dosyasına erişmeyi deneyin


Yöntem 2

Bu uygulamanın web.config dosyasına gidin ve bu satırları ona ekleyin

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

2

* .Json dosyasını bir alt klasöre değil webRoot'a koymayı deneyin. Ve sonra şöyle referans verin:

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

: Bu tabii ki, önceki içerme ve örnekleme jQuery sistem nesnenin gelen gerektirir jquery.min.js veya JSON yapı: json2-1.0.min.js


1

.Json'u .txt olarak değiştirdim ve istek düzgün çalışıyor. .Txt'nin neden olabileceğinden emin değilim.


1

Eğer kullanırsanız ASP.NET Core, sadece dosyayı koymak wwwrootancak kullanırsanız ASP.NETçerçevesini şöyle bu web.config gelen JSON uzantısı sağlar:

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

ve

<location path="Content">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.