Javascript 在java脚本中从控制器MVC获取json
我正在尝试制作一些mvc应用程序,但我遇到了一个问题。我想在javascript文件中从mvc控制器获取json: JS:Javascript 在java脚本中从控制器MVC获取json,javascript,c#,json,asp.net-mvc,asp.net-mvc-4,Javascript,C#,Json,Asp.net Mvc,Asp.net Mvc 4,我正在尝试制作一些mvc应用程序,但我遇到了一个问题。我想在javascript文件中从mvc控制器获取json: JS: 它不起作用了。我有404错误。它无法从控制器获取某些信息。我做错了什么?对不起,英语不好。希望您理解我的要求。您是否在routeconfig.cs中定义了路线 你应该吃点类似的东西 public class RouteConfig { public static void RegisterRoutes(RouteCollection route
它不起作用了。我有404错误。它无法从控制器获取某些信息。我做错了什么?对不起,英语不好。希望您理解我的要求。您是否在routeconfig.cs中定义了路线 你应该吃点类似的东西
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "YOUR NAME",
url: "{YOUR CONTROLLER NAME}/{GetJsonTest}",
defaults: new { controller = "YOUR CONTROLLER NAME", action = "GetJsonTest" }
);
}
}
您是否在routeconfig.cs中定义了路线 你应该吃点类似的东西
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "YOUR NAME",
url: "{YOUR CONTROLLER NAME}/{GetJsonTest}",
defaults: new { controller = "YOUR CONTROLLER NAME", action = "GetJsonTest" }
);
}
}
您已经提到,您正试图从一个javascript文件调用
GetJsonTest
:js。您曾经使用
var actionUrl = '@Url.Action("GetJsonTest", "JsonTest")';
上面是.js
文件中的Razor语句。问题是javascript
文件无法执行Razor
语句。但是在.cshtml
中可以。因此,如果您在.cshtml
中使用javascript
中的Razor
语句,它将工作;如果您在.js
中使用javascript
中的Razor
语句,它将不工作。您必须从.js
文件中这样调用:
var actionUrl = '/JsonTest/GetJsonTest';
$.getJSON(actionUrl, function (response) {
if (response != null) {
$("h2").append("<li>" + response.Id + " " + response.Name + " " + response.Author + "</li>")
}
});
var actionUrl='/JsonTest/GetJsonTest';
$.getJSON(actionUrl,函数(响应){
if(响应!=null){
$(“h2”).append(“”+response.Id+”“+response.Name+”“+response.Author+” ”)
}
});
您提到您正试图从一个javascript文件调用GetJsonTest
:js。您曾经使用
var actionUrl = '@Url.Action("GetJsonTest", "JsonTest")';
上面是.js
文件中的Razor语句。问题是javascript
文件无法执行Razor
语句。但是在.cshtml
中可以。因此,如果您在.cshtml
中使用javascript
中的Razor
语句,它将工作;如果您在.js
中使用javascript
中的Razor
语句,它将不工作。您必须从.js
文件中这样调用:
var actionUrl = '/JsonTest/GetJsonTest';
$.getJSON(actionUrl, function (response) {
if (response != null) {
$("h2").append("<li>" + response.Id + " " + response.Name + " " + response.Author + "</li>")
}
});
var actionUrl='/JsonTest/GetJsonTest';
$.getJSON(actionUrl,函数(响应){
if(响应!=null){
$(“h2”).append(“”+response.Id+”“+response.Name+”“+response.Author+” ”)
}
});
控制器的名称是什么?从你的Url.Action,我会假设JsonTest,但它实际上被称为JsonTestController.cs吗?只要你的GetJsonTest
方法在JsonTestController.cs
@sleeyuan嗨,是的,它实际上被称为JsonTestController。cshtml
文件将被MVC模板服务器保护。其他任何操作都无法完成,因此您的js文件正在尝试向url@url.Action(“GetJsonTest”、“JsonTest”)
发出文本请求。如果您在浏览器中进行了一些调试,这将是显而易见的。@csharpbd明白了。我知道了。非常感谢。控制器的名称是什么?从你的Url.Action,我会假设JsonTest,但它实际上被称为JsonTestController.cs吗?只要你的GetJsonTest
方法在JsonTestController.cs
@sleeyuan嗨,是的,它实际上被称为JsonTestController。cshtml
文件将被MVC模板服务器保护。其他任何操作都无法完成,因此您的js文件正在尝试向url@url.Action(“GetJsonTest”、“JsonTest”)
发出文本请求。如果您在浏览器中进行了一些调试,这将是显而易见的。@csharpbd明白了。我知道了。非常感谢。