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.