0

我正在使用 ASP.NET MVC4 应用程序,因此,所有通过 ajax 发送到服务器的数组数据都必须使用该traditional选项发送。([]对于 POST 变量没有)。

问题是,我还有一个过滤器设置,它需要一个 AntiforgeryToken 与每个 ajax POST 一起发送。

我已经使用这样的方法解决了ajaxPrefilter这个问题:

$.ajaxPrefilter(function (options, originalOptions) {
  if (options.type.toUpperCase() == "POST") {
    options.data = $.param($.extend(originalOptions.data, { __RequestVerificationToken: "antiForgeryToken" }));
  }
});

这很好用,并添加__RequestVerificationToken到所有 POST 中。但是,它也会导致我的数据没有根据traditional标志进行参数化。

有人知道我如何修改我的预过滤器来解决这个问题吗?

示例可以在这里找到:http: //jsbin.com/IxoKIKA/2/edit

4

1 回答 1

2

您忘记将traditional参数传递给$.param()。你应该写:

options.data = $.param($.extend(originalOptions.data, {
    __RequestVerificationToken: "antiForgeryToken"
}), true);
于 2013-10-08T07:35:27.027 回答