从文件加载JSON数据

时间:2013-08-21 12:44:40

标签: c# asp.net-mvc json

这可能是任何问题的重复,但我无法找到解决问题的方法。

我正在构建一个MVC4应用程序,我想在其中使用AJAX从另一个JavaScript文件加载JSON数据。

为此,我尝试使用$.getJSON()$.ajax()$.get()其他类似函数来加载数据。这是一个简单的AJAX调用,没什么特别的!最后我意识到我需要调用一个控制器/动作来加载JSON并将其返回。这个解决方案对我有用。

$.ajax({
    type: "GET",
    url: "/controller/action", // <-- How can I refer to the JSON file directly here?
    contentType: "application/json; charset=utf-8",
    dataType: "application/json",
    success: function(data) {
    },
    error: function(err) {
    }
});

我想知道是否还有其他方法让我在视图中使用JavaScript加载此文件而不调用任何控制器/操作?

  

注意:该文件是.json文件,而不是.js文件。我不想在任何<script>标记中包含该文件!

2 个答案:

答案 0 :(得分:0)

这里的问题是你的web.config中没有指定mime类型的json类型,IIS / IIS Express会返回404错误。

尝试修改web.config,如下所示:

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

您还需要将dataType更改为json而不是application / json:

$.ajax({
    type: "GET",
    url: "Content/your.json",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
    },
    error: function (err) {
    }
});

希望这有帮助。

答案 1 :(得分:-1)

要引用JSON文件,您可以使用Url.Content()中的Javascript方法:

$.ajax({
    type: "GET",
    url: "@Url.Content("~/Content/your.json")", 
    contentType: "application/json; charset=utf-8",
    dataType: "application/json",
    success: function (data) {
    },
    error: function (err) {
    }
});

在这种情况下,我在your.json文件夹中有一个Content文件。

希望它有所帮助!