Eu tenho um arquivo json em uma pasta de conteúdo dentro do meu projeto asp.net:
<projectName>
\Content
NBCCJr.json
... e o código para acessá-lo:
$.getJSON('~/Content/NBCCJr.json', function (data) {
$.each(data, function(i, dataPoint) {
// Bla
});
});
)
... mas nada acontece quando o código é chamado; o console do navegador diz: "Falha ao carregar o recurso: o servidor respondeu com um status 404 (não encontrado)"
Por que não foi encontrado? "Tilde whack filename" não é o caminho correto para o arquivo?
ATUALIZAR
Também tentei com os "golpes" para trás:
$.getJSON('~\Content\NBCCJr.json', function (data) {
... e obteve o mesmo resultado (" Falha ao carregar o recurso: o servidor respondeu com um status 404 (não encontrado) ")
ATUALIZAÇÃO 2
Então eu tentei sem um golpe prependido assim:
$.getJSON('Content/NBCCJr.json', function (data) {
... e recebo esta mensagem ambígua no console:
*GET http://localhost:9702/Content/NBCCJr.json 404 (Not Found) jquery.js:8724
XHR finished loading: "http://localhost:9702/Content/NBCCJr.json".*
Portanto, ele não foi encontrado e ainda assim carregado?
ATUALIZAÇÃO 3
Quando tentei navegar até o arquivo no navegador, alterando:
http://localhost:9702/Default.cshtml
...para:
http://localhost:9702/Content/NBCCJr.json
Recebi uma mensagem WSOD informativa de Vint Cerf, Tim Berners-Lee e / ou Al Gore dizendo:
Erro HTTP 404.3 - Não encontrado A página que você está solicitando não pode ser servida devido à configuração da extensão. Se a página for um script, adicione um manipulador. Se o arquivo deve ser baixado, adicione um mapa MIME.
ATUALIZAÇÃO 4
Graças ao JAM, agora está funcionando.
Tive que adicionar isso ao Web.Config:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
fonte
Respostas:
Você já tentou remover o
~
?Como em:
$.getJSON('/Content/dumboJr.json', function (data) { $.each(data, function(i, dataPoint) { // Bla }); }); )
Para permitir que o IIS forneça arquivos JSON, tente adicionar isto ao seu web.config:
<staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent>
fonte
A solução é que você precisa adicionar o tipo de extensão de arquivo json em Tipos MIME
Método 1
Vá para IIS, selecione seu aplicativo e encontre tipos de MIME
Clique em Adicionar no painel direito
Extensão do nome do arquivo = .json
Tipo MIME = aplicativo / json
Depois de adicionar o tipo de arquivo .json em Tipos MIME , reinicie o IIS e tente acessar o arquivo json
Método 2
Vá para web.config desse aplicativo e adicione essas linhas nele
<system.webServer> <staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent> </system.webServer>
fonte
Tente colocar o arquivo * .json no webRoot, não em uma subpasta. E então referencie-o como:
$.getJSON('NBCCJr.json', function (data) {
É claro que isso requer a inclusão e instanciação prévia do objeto do sistema jQuery de: jquery.min.js ou a estrutura JSON de: json2-1.0.min.js
fonte
Eu mudei .json para .txt e a solicitação está funcionando bem. Não tenho certeza sobre as consequências que o .txt pode causar.
fonte
Se você usar
ASP.NET Core
, apenas coloque o arquivo,wwwroot
mas se você usar aASP.NET
estrutura, isso permite a extensão JSON do web.config da seguinte maneira:<staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent>
e
<location path="Content"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
fonte