2013-07-09 45 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; 
    }