Javascript 在java脚本中从控制器MVC获取json

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

我正在尝试制作一些mvc应用程序,但我遇到了一个问题。我想在javascript文件中从mvc控制器获取json:

JS:


它不起作用了。我有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明白了。我知道了。非常感谢。