2013-07-09 82 views
0

我正在使用VS2012,並運行ASP.NET MVC4項目。如何在jQuery中讀取Json文件

我似乎無法得到這個低於火:

$.ajax({ 
    url: "~/xml/JsonTest.json", 
    type: "GET", 
    dataType: "json", 
    success: function (json) { 
     alert("HI");     
    } 
}); 

我也嘗試過這種方式,但都無濟於事:

$.getJSON('../xml/JsonTest.json', function (json) {    
     alert("GET JSON !"); 
    }); 

難道不知何故沒有找到的目錄結構? 謝謝。 鮑勃

+0

請檢查是否這會有所幫助:http://iviewsource.com/codingtutorials/getting-started-with- javascript-object-notation-json-for-absolute-beginners/ – Roshit

回答

2

第一個肯定不會工作,因爲~並不意味着任何客戶端。第二個例子要求什麼實際的URL?它會發送一個AJAX請求嗎?什麼是迴應?

如果您有一個動態的服務器端URL,那麼您將需要使用服務器端代碼在渲染輸出中動態構建它。事情是這樣的:

$.ajax({ 
    url: '@Url.Content("~/xml/JsonTest.json")', 
    type: 'GET', 
    dataType: 'json', 
    success: function (json) { 
     alert("HI");     
    } 
}); 

這會導致客戶端JavaScript渲染與服務器端路徑"~/xml/JsonTest.json"完整的URL。

+0

第二個$ .getJSON()請求沒有被觸發!我嘗試了幾種方法... –

+0

@bob:你如何驗證AJAX請求/響應?無論如何,如果您在我的答案中使用服務器端URL助手,那麼AJAX調用的請求/響應是什麼? – David

+0

我沒有問題調用我的控制器,如URL:「/ Margins/getInitMargin」。但要抓住一個物理文件?不工作! –

0
我的情況

最好的解決辦法是把它在C#方法正確的代碼,如下所示:

public string getJsonParameters() 
    { 

     JavaScriptSerializer ser = new JavaScriptSerializer(); 

     string jsonStr = System.IO.File.ReadAllText(Server.MapPath("~/App_Data/myKeys.json"));       

     JsonParameters jsonData = (JsonParameters)ser.Deserialize(jsonStr, typeof(JsonParameters));    

     return jsonStr; 
    }