我无法将我的formdata发布回控制器。我正在尝试在MVC4应用程序中实现向导,该向导基于来自Nadeem Afana(http://afana.me/post/create-wizard-in-aspnet-mvc-3.aspx)的示例项目。 我已经下载了示例项目,它运行良好。在我的项目中,代码也正常工作,除了一件事,'post'不起作用(而提交后来的IS工作)。
我已经隔离了变量,如果我在Firefox的调试器中查看它们,它们看起来很好
var data = $("form").serialize();
var url = '@Url.Action("Confirm", "Product")';
$.post(url, data, function (r)
{
// inject response in confirmation step
$(".wizard-step.confirm").html(r);
});
但是,指定控制器上的操作不会被调用(我在其上设置了一个断点)
[HttpPost]
public ActionResult Confirm(ProductModel model)
{
// my code ...
return PartialView(model);
}
我也试过
$.post("/Product/Confirm", $("form").serialize(), function (r)
使用网址代替@ Url.Action ...无变化。
对于我的生活,我无法弄清楚我做错了什么或我错过了什么,我一直在谷歌上搜索整个下午。
答案 0 :(得分:1)
您需要安装Fiddler(http://fiddler2.com/),然后使用它来查看正在发出的请求(如果有的话)以及它失败的原因。老实说,根据我的经验,在没有像Fiddler这样的工具的情况下尝试修复Ajax问题几乎是不可能的,当然也是一个很大的时间同步......
答案 1 :(得分:0)
为什么不尝试使用ajax调用的完整表示法,以防某些默认值搞砸了你?
mydata = $('form').serialize();
$.ajax({
url: '/Product/Confirm',
type: 'POST',
dataType: 'html',
data: mydata,
success: function() {
$(".wizard-step.confirm").html(r);
});
编辑1:
错误处理
error: function(response, status, error) {
alert(error);
}