我有一个MVC 5页面,我希望通过ajax点击按钮将json数据发布到控制器。我必须发布数据的功能:
var token = $('[name=__RequestVerificationToken]').val();
var jsonData = JSON.stringify(@Html.Raw(Json.Encode(Model)));
var dataString = '{ __RequestVerificationToken:' + token + ', viewModel:' + jsonData + '}';
alert(dataString);
$.ajax({
url: '/Workflow/Index',
cache: false,
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: dataString,
success: function (data) {
alert('success');
}
})
控制器具有以下定义:
[RequiresAuthentication]
[HttpPost]
[ValidateAntiForgeryToken]
[ValidateInput(true)]
public ActionResult Index(CustomerCallViewModel viewModel, string workflowStep, PostedServiceSelections postedServiceSelections)
当查询触发时,我得到500错误,但我无法弄清楚1)错误实际是什么,以及2)如何修复它以便查询起作用。
我发现使用此方法找不到解决方法:
$.ajax({
url: '/Workflow/Index',
type: 'POST',
data: $("#mainForm").serialize(),
success: function (data) {
alert('test');
}
});
但我想了解上一次尝试中出错的地方。想法?
谢谢, 詹姆斯
答案 0 :(得分:0)
您可能希望简化此操作并使用mvc-ajax表单帮助程序。它消除了使用基于脚本的ajax调用的许多问题。
@using (Ajax.BeginForm("Index", "Workflow", new AjaxOptions { HttpMethod = "POST", OnSuccess = "postSuccess" })
{
// form fields here
<input type="submit" value="Submit" />
}
<script>
function postSuccess() {
alert('test');
}
</script>