Tại sao tệp json của tôi không được tìm thấy?


85

Tôi có một tệp json trong thư mục Nội dung trong dự án asp.net của tôi:

<projectName>
    \Content
        NBCCJr.json

... và mã để truy cập nó:

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

... nhưng không có gì xảy ra khi mã được gọi; bảng điều khiển trình duyệt cho biết, "Không tải được tài nguyên: máy chủ phản hồi với trạng thái 404 (Không tìm thấy)"

Tại sao nó không được tìm thấy? Không phải "tên tệp tin dấu ngã" có phải là đường dẫn chính xác đến tệp không?

CẬP NHẬT

Tôi cũng đã thử nó với "whacks" ngược:

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

... và nhận được cùng một kết quả (" Không thể tải tài nguyên: máy chủ phản hồi với trạng thái 404 (Không tìm thấy) ")

CẬP NHẬT 2

Sau đó, tôi đã thử nó sans một cái gì đó đã đóng trước do đó:

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

... và tôi nhận được thông báo không rõ ràng này trong bảng điều khiển:

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

Vì vậy, nó vẫn chưa được tìm thấy và vẫn chưa được tải?

CẬP NHẬT 3

Khi tôi cố gắng điều hướng đến tệp trong trình duyệt bằng cách thay đổi:

http://localhost:9702/Default.cshtml

...đến:

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

Tôi nhận được một tin nhắn WSOD đầy đủ thông tin từ Vint Cerf, Tim Berners-Lee và / hoặc Al Gore nói rằng:

Lỗi HTTP 404.3 - Không tìm thấy Trang bạn đang yêu cầu không thể được cung cấp do cấu hình tiện ích mở rộng. Nếu trang là một tập lệnh, hãy thêm một trình xử lý. Nếu tệp cần được tải xuống, hãy thêm bản đồ MIME.

CẬP NHẬT 4

Cảm ơn JAM, nó hiện đang hoạt động.

Tôi đã phải thêm cái này vào Web.Config:

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

Đừng lo lắng về các mã cho bây giờ, nhìn thấy nếu bạn có thể xác định vị trí các tập tin trong trình duyệt của bạn để bắt đầu với
Lee Taylor

Tôi đã nhận xét tất cả mã sau khi dòng hiển thị, vì lý do đó. IOW, hàm này trống.
B. Clay Shannon

Bạn có quản lý để hiển thị json trong trình duyệt của mình không? tức là đặt URL trực tiếp vào thanh địa chỉ?
Lee Taylor

@greg: Nó đã "siết chặt" cái gì?
B. Clay Shannon

2
Cập nhật 4 đã giải quyết cho tôi! Thks \ o /
rodrigorf

Câu trả lời:


97

Bạn đã thử xóa ~?

Như trong:

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

Để cho phép IIS phân phát tệp JSON, hãy thử thêm tệp này vào web.config của bạn:

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

Có (bây giờ tôi có). Đây: $ .getJSON ( '/ Content / NBCCJr.json', function (data) {cung cấp cho các phản ứng tương tự.
B. Clay Shannon

Nó có phải là phản hồi 404 không? Bạn đã thử điều hướng đến tệp trực tiếp trong trình duyệt của mình chưa? Thư mục Nội dung có nằm trong thư mục gốc của dự án web của bạn không?
JAM

Vâng, bài đăng nói rằng. Vui lòng xem cập nhật của tôi. Có, Nội dung là một thư mục cấp một, như được chỉ ra trong bài đăng gốc.
B. Clay Shannon,

Hãy xem bài đăng này .
JAM

Nếu bạn thêm loại mime web.config được chỉ định, bạn sẽ ổn :)
JAM

22

Giải pháp là bạn cần thêm loại phần mở rộng tệp json trong Loại MIME

Phương pháp 1

Đi tới IIS, Chọn ứng dụng của bạn và Tìm Loại MIME

nhập mô tả hình ảnh ở đây

Nhấp vào Thêm từ bảng điều khiển Bên phải

Phần mở rộng Tên tệp = .json

MIME Type = application / json

nhập mô tả hình ảnh ở đây

Sau khi thêm loại tệp .json trong Loại MIME , Khởi động lại IIS và cố gắng truy cập tệp json


Phương pháp 2

Truy cập web.config của ứng dụng đó và thêm dòng này vào đó

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

2

Hãy thử đưa tệp * .json vào webRoot, không phải trong thư mục con. Và sau đó tham khảo nó như:

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

Tất nhiên, điều này yêu cầu bao gồm và khởi tạo đối tượng hệ thống jQuery trước đó từ: jquery.min.js hoặc cấu trúc JSON từ: json2-1.0.min.js


1

Tôi đã thay đổi .json thành .txt và yêu cầu đang hoạt động tốt. Tôi không chắc về hậu quả .txt có thể gây ra.


1

Nếu bạn sử dụng ASP.NET Core, chỉ cần đặt tệp vào wwwrootnhưng nếu bạn sử dụng ASP.NETkhuôn khổ, điều này cho phép mở rộng JSON từ web.config như sau:

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

<location path="Content">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.