带有.NET MVC的jQuery getJSON不起作用

Posted

技术标签:

【中文标题】带有.NET MVC的jQuery getJSON不起作用【英文标题】:jQuery getJSON with .NET MVC not working 【发布时间】:2017-08-30 23:36:24 【问题描述】:

当页面加载到我的 .NET MVC 应用程序中时,我已经设置了一个 getJSON 调用,如下所示:

$(document).ready(function()
   $.getJSON("/Administrator/GetAllUsers", function (res) 

            // getting internal server error here...
        );

);

动作看起来像这样:

  [HttpGet]
    [ActionName("GetAllUsers")]
    public string GetAllUsers()
    
        return new javascriptSerializer().Serialize(ctx.zsp_select_allusers().ToList());
    

我收到此错误:

500 (Internal Server Error)

我在这里做错了什么???

【问题讨论】:

return Json(ctx.zsp_select_allusers(), JsonRequestBehavior.AllowGet); 去掉 Administrator/GetAllUsers 前的斜杠 / 并检查。你的返回类型应该是 JsonReturn 并且它需要是public ActionResult GetAllUsers()public JsonResult GetAllUsers() @BasantaMatia 仍然无法正常工作:/ 不需要.ToList()(它正在序列化,因此正在迭代集合) 【参考方案1】:

在 MVC 中,仅当您出于某些安全目的向它发出 post 请求时才会返回 json 结果,除非您明确指定 JsonRequestBehavior.AllowGet,否则也要更改您的返回类型

[HttpGet]
    [ActionName("GetAllUsers")]
    public JsonResult GetAllUsers()
    
        return Json(ctx.zsp_select_allusers(), JsonRequestBehavior.AllowGet);
    

【讨论】:

这很愚蠢,但尝试删除[HttpGet][ActionName("GetAllUsers")] 如果仍然出现错误,请编辑您的问题并粘贴控制器的代码。【参考方案2】:

在方法中更改您的返回类型并返回 Json,如下所示,

[HttpGet]
[ActionName("GetAllUsers")]
public ActionResult GetAllUsers()

    var data = ctx.zsp_select_allusers().ToList();
    return Json(data, JsonRequestBehavior.AllowGet);

正如您在评论中提到的,您仍然收到 500 错误。我认为这个控制器有 [Authorize] 属性,你在没有登录的情况下调用这个方法。在这种情况下,您可以使用 GetAllUsers() 中的 [AllowAnonymous] 属性来访问该方法。

【讨论】:

【参考方案3】:

试试看

$.getJSON('@Url.Action("GetAllUsers", "Administrator")', function (res)   

            alert(res);
        );

 [HttpGet]
    public ActionResult GetAllUsers( ) 

          //get the data from db , then send it
          //i'm passing dummy text 'got it'

        return Json("got it", JsonRequestBehavior.AllowGet);
    

【讨论】:

以上是关于带有.NET MVC的jQuery getJSON不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有 Jquery 模态形式的 asp.net MVC

使用带有 jquery ajax 的 ASP.NET MVC 验证?

带有jQuery getJSON(回调)的JSONP公共API(MySql)

PHP 带有jQuery getJSON(回调)的JSONP公共API(MySql)

用 Json 数组 MVC 4 填充 jquery 数据表

ASP.NET MVC - 使用带有匿名类型和 Jquery 的 JavaScriptStringEncode()