我正在使用服务堆栈,我想进行GET调用以更新表,但我得到状态405,尽管API方法是GET。 这是ajax调用(planning.cshtml):
$("#search").click(function() {
$.ajax({
url: "/api/planning/?handler=Planning",
type: "GET",
contentType: false,
processData: false,
data: $("#planning-search-form").serialize(),
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
success: function(result) {
console.log(result);
},
error: function (error) {
var msg = '';
if (error.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (error.status == 404) {
msg = 'Requested page not found. [404]';
} else if (error.status == 500) {
msg = 'Internal Server Error [500].';
}
toastr.error(msg);
}
});
});
这是它应该达到的方法(planning.cs):
public IActionResult OnGetPlanning([FromBody] GetPlanningViewModel viewModel)
{
return Redirect("/"); //for testing purposes
return PostJsonAction(() =>
{
var response = ServiceClient.Get(new GetOrderPlanning
{
YearFrom = viewModel.YearFrom,
WeekFrom = viewModel.WeekFrom,
YearTo = viewModel.YearTo,
WeekTo = viewModel.WeekTo,
Customers = viewModel.Customers,
Orders = viewModel.Orders,
Supervisor = viewModel.Supervisor
}
);
if (response.IsNotEmpty())
{
return new JsonResult(new {Success = true, response.Result, ActionMessage});
}
return new JsonResult(new
{
Success = false,
ErrorMessage = "Not defined"
});
});
}
以下是API类的一行:
[Route("/planning", "GET", Summary = "Gets order planning")]
问题在于,当我复制调用的格式化链接时,一切都很好,我得到了数据,但是当我进行ajax调用时,我得到405状态错误。任何想法如何解决这个问题?