내 json 파일을 찾을 수없는 이유는 무엇입니까?


85

내 asp.net 프로젝트의 Content 폴더에 json 파일이 있습니다.

<projectName>
    \Content
        NBCCJr.json

... 그리고 그것에 접근하는 코드 :

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

...하지만 코드가 호출 될 때 아무 일도 일어나지 않습니다. 브라우저 콘솔에 "리소스로드 실패 : 서버가 404 (찾을 수 없음) 상태로 응답했습니다."라고 표시됩니다.

왜 찾을 수 없습니까? "물결 파일 이름"이 파일에 대한 올바른 경로가 아닙니까?

최신 정보

나는 또한 "whacks"를 거꾸로 시도했다.

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

... 동일한 결과를 얻었습니다 ( " Failed to load resource : the server responded with a status of 404 (Not Found) ").

업데이트 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

Vint Cerf, Tim Berners-Lee 및 / 또는 Al Gore로부터 유익한 WSOD 메시지를 받았습니다.

HTTP 오류 404.3-찾을 수 없음 확장 구성으로 인해 요청한 페이지를 제공 할 수 없습니다. 페이지가 스크립트 인 경우 핸들러를 추가하십시오. 파일을 다운로드해야하는 경우 MIME 맵을 추가하십시오.

업데이트 4

JAM 덕분에 이제 작동합니다.

이것을 Web.Config에 추가해야했습니다.

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

당신이 시작하는 브라우저에서 파일을 찾을 수 있다면 지금의 코드에 대해 걱정하지 마십시오, 참조
리 테일러

그 이유 때문에 표시된 줄 뒤에 모든 코드를 주석 처리했습니다. IOW, 함수가 비어 있습니다.
B. 클레이 섀넌

브라우저에 json을 표시 할 수 있었습니까? 즉, URL을 주소 표시 줄에 직접 넣습니까?
Lee Taylor

@greg : "움직임"은 무엇입니까?
B. Clay Shannon

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 ( '/ 콘텐츠 / NBCCJr.json'기능 (데이터) {동일한 응답을 제공한다.
B. 클레이 섀넌에게

404 응답입니까? 브라우저에서 직접 파일을 탐색 해 보셨습니까? 웹 프로젝트의 루트에 Content 폴더가 있습니까?
JAM

예, 게시물에 나와 있습니다. 내 업데이트를 참조하십시오. 예, 콘텐츠는 원본 게시물에 표시된 것처럼 첫 번째 수준의 폴더입니다.
B. 클레이 섀넌

이 게시물을 살펴보십시오 .
JAM

지정된 web.config mime 유형을 추가하면 괜찮습니다. :)
JAM

22

해결책은 MIME 유형에 json 파일 확장자 유형을 추가해야한다는 것입니다.

방법 1

IIS로 이동하여 응용 프로그램을 선택하고 MIME 유형 찾기

여기에 이미지 설명 입력

오른쪽 패널에서 추가를 클릭하십시오.

파일 이름 확장자 = .json

MIME 유형 = application / json

여기에 이미지 설명 입력

추가 한 후 .json의 에서 파일 형식을 MIME 유형 , 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파일을 넣지 wwwrootASP.NET프레임 워크 를 사용하는 경우 다음과 같이 web.config에서 JSON 확장을 허용합니다.

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

<location path="Content">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.