我正在使用VS2012,并运行ASP.NET MVC4项目。
我似乎无法在下面解决这个问题:
$.ajax({
url: "~/xml/JsonTest.json",
type: "GET",
dataType: "json",
success: function (json) {
alert("HI");
}
});
我也是这样试过的,但无济于事:
$.getJSON('../xml/JsonTest.json', function (json) {
alert("GET JSON !");
});
它是否以某种方式找不到目录结构? 谢谢。 鲍勃
答案 0 :(得分: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进行呈现。
答案 1 :(得分: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;
}