【问题标题】:get json from controller MVC in java script在javascript中从控制器MVC获取json
【发布时间】:2017-08-05 09:06:33
【问题描述】:

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

JS:

var actionUrl = '@Url.Action("GetJsonTest", "JsonTest")';
$.getJSON(actionUrl, function (response) {
    if (response != null) {
        var html = "<li>" + response.Id + " " + response.Name + " " + response.Author + "</li>";
        $("h2").append(html);
    }
});

控制器:

[HttpGet]
public ActionResult GetJsonTest() {
    var books = new Book() {
        Id = '1',
        Name = "1+1",
        Author = "Varnava",
        Price = 100
    };
    return Json(books, JsonRequestBehavior.AllowGet);
}

它不工作。我有 404 错误。它无法从控制器中获取任何东西。我究竟做错了什么?抱歉英语不好。希望你明白我的要求。

【问题讨论】:

  • 控制器的名称是什么?从你的 Url.Action,我会假设 JsonTest,但它实际上是否称为 JsonTestController.cs?
  • 只要您的 GetJsonTest 方法在 JsonTestController.cs 内,您的代码就应该可以工作
  • @sleeyuen hi,是的,其实它叫JsonTestController。
  • cshtml 文件将由 MVC 模板服务器解释。其他任何东西都不会,因此您的 js 文件正在尝试向 url '@Url.Action("GetJsonTest", "JsonTest")' 发出文字请求。如果您在浏览器中进行了一些调试,这将立即显而易见。
  • @csharpbd 陷阱。我懂了。谢谢!

标签: javascript c# json asp.net-mvc asp.net-mvc-4


【解决方案1】:

您提到您正试图从 一个 javascript 文件:js 调用 GetJsonTest。您曾经使用

生成ajax url
var actionUrl = '@Url.Action("GetJsonTest", "JsonTest")';

上面的 Razor 声明来自.js 文件。问题是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>")
    }
});

【讨论】:

    【解决方案2】:

    你是否在你的 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" }
                );
        }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多