2016-01-13 56 views
1

我一直在搞乱MVC6控制器和操作方法。我注意到的是,返回的JSON结果是不同的,因为没有JsonRequestBehaviour了。 Ajax的帖子工作正常,但我有一个Get一直返回502(坏网关)。服务器操作方法正常工作。MVC 6 Ajax调用返回HTTP 502错误

$.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); 
    } 
+0

无法复制您的问题,但什么阻止您使用POST? – JamieD77

+0

我尝试使用POST并获得相同的结果。但是,我有另一个正确保存数据的POST方法,但是,在该方法中,我只是返回确认消息json字符串。 – Greg

+0

您是否尝试过设置ajax调用的contentType? – JB06

回答

-1

我认为你需要更改someways你的代码。改变你的jQuery为:

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

而且改变你的操作代码最后一行:

return Json(agents, JsonRequestBehavior.AllowGet); 
+0

我以为我确实解释了JsonRequestBehaviour不存在于MVC6中,并且正在调用动作方法。 – Greg

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#表达@ ..得到的模型值,只要确定,他们所得到正确的评估。