我一直在搞乱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);
}
答案 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);