经过几天的搜索,这是我的问题(这个问题让我很生气)
我使用post方法传递ajax调用以提交表单。
不幸的是,$(form).submit()
不适合我的情况。这是jquery代码:
$.ajax({
url: '/Controller/_MyJson',
type: 'POST',
method: "POST",
data: $('#form').serialize(),
success: function (data)
{
// I will add a redirection here later
}
});
控制器操作:
[HttpPost]
public JsonResult _MyJson (MyViewModel vm)
{
//action here
}
路线配置:
url: "{controller}/{action}/{id}"
问题是在Chrome控制台中我的调用是作为GET传递的,它给我404错误。在控制器端,_MyJson
方法存在,并且声明了[HttpPost]
。
我的jquery版本是2.1.4。我使用aspx WebForms和MVC模型。
我感谢任何帮助!
UPD: 切换到Mozilla调试器后,我发现我的POST调用是通过statut 301传递的,并且有一个同名的GET,它给出了404错误。 O_O
答案 0 :(得分:1)
尝试使用简写:
$.post("/Controller/_MyJson", $('#form').serialize(), function (data) {
// stuff with data
});
答案 1 :(得分:1)
您似乎正在序列化整个表单数据。 Controller HttpPost方法必须匹配此对象,否则GET方法将抛出404错误。尝试在控制器中创建自定义对象,并从ajax调用发送相应的JSON数据。这将解决问题。