2013-08-21 106 views
1

這可能是任何問題的副本,但我無法找到解決我的問題的方法。從文件中加載JSON數據

我建立的,我想從另一個JavaScript文件加載JSON數據,使用AJAX的應用MVC4。

爲此,我嘗試使用$.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>標記中!

+0

這篇文章可能會有所幫助 - http://stackoverflow.com/questions/4828207/how-to-use-a-json-file-in-javascript –

回答

-1

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

$.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

希望它有幫助!

+0

該方法將虛擬(相對)路徑轉換爲應用程序絕對路徑而不是用於讀取文件。 –

0

這裏的問題是,你不必在你的web.config和IIS/IIS Express已返回404錯誤指定類型JSON的MIME類型。

嘗試修改你的web.config像這樣:

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

您還需要更改數據類型爲JSON,而不是應用程序/ JSON:

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

希望這有助於。