MVC 6 Ajax调用返回HTTP 502错误

时间:2016-01-13 18:21:37

标签: ajax asp.net-mvc asp.net-core

我一直在搞乱MVC6控制器和动作方法。我注意到的是返回的JSON结果不同,因为没有JsonRequestBehaviour了。 Ajax帖子工作正常,但我有一个Get,它一直返回502(Bad Gateway)。服务器操作方法正常工作。

 $.ajax({
            type: "GET",
            url: "/managingagent/loadagents",
            data: "managingagentid=" + @Model.ManagingAgentId,
            dataType: "json",
            success: function(response) {
                alert("SUCCESS");
            },

            fail: function(response) {
                alert("ERROR");
            }
        });

行动方法

 [HttpGet]
    public IActionResult LoadAgents(int managingAgentId)
    {
        var userId = User.GetUserId();
        var managingAgent =
            _context.ManagingAgentMember.Where(x => x.ApplicationUserId == int.Parse(userId))
                .Select(x => x.ManagingAgent).Single();

        var agents = _context.ManagingAgentMember.Where(x => x.ManagingAgentId == managingAgent.ManagingAgentId && x.IsActive).ToList();
        return Json(agents);
    }

3 个答案:

答案 0 :(得分:1)

要解决此问题,请将proxy_buffer_size配置添加到您的位置块。

server {
    listen        80;
    server_name   host.tld;

    location / {
          proxy_pass       http://upstream;
          proxy_buffer_size          128k;
          proxy_buffers              4 256k;
          proxy_busy_buffers_size    256k;
    }
}

答案 1 :(得分:0)

这与GET或POST无关。 ajax调用("managingagentid=" + @Model.ManagingAgentId)中的数据是字符串而不是JSON。您可以使用JSON.stringify({ managingagentid: @Model.ManagingAgentId});将其转换为JSON数据 实际上,由于您要发送一个参数,我建议您将其与URL一起传递。

$.ajax({
            type: "GET",
            url: "/managingagent/loadagents/"+ @Model.ManagingAgentId,
            dataType: "json",
            success: function(response) {
                alert("SUCCESS");
            },

            fail: function(response) {
                alert("ERROR");
            }
        });

注意:由于您使用剃刀C#表达式@ ..来获取模型值,只需确保它们得到正确的评估。

答案 2 :(得分:-1)

我认为您需要在某些方面更改代码。将jQuery更改为:

        type: "GET",
        url: "/managingagent/loadagents",
        dataType: "JSON",
        data: { managingAgentId: @Model.ManagingAgentId },

同时将操作代码的最后一行更改为:

return Json(agents, JsonRequestBehavior.AllowGet);