带有视图模型的Ajax POST和__RequestVerificationToken错误输出

时间:2015-05-05 17:01:59

标签: jquery ajax asp.net-mvc post

我有一个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');
              }
          });

但我想了解上一次尝试中出错的地方。想法?

谢谢, 詹姆斯

1 个答案:

答案 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>