【问题标题】:send an object that have an array inside with ajax to a httppost method in mvc将一个内部带有 ajax 的数组的对象发送到 mvc 中的 httppost 方法
【发布时间】:2014-09-28 22:06:48
【问题描述】:

我如何将一个包含 ajax 数组的对象发送到 mvc 中的 httppost 方法? 我在我看来使用@Html.AntiForgeryToken() 所以我需要使用ajax。 这是我的方法

[HttpPost]
[ValidateAntiForgeryToken()]
public RedirectResult MultipleChangeSignupStatus(int[] id, string status)
{
   some code here
}

而我与链接按钮一起使用的 ajax 是这样的:

var ids = [1 ,2, 3 ,4 ,5];
var token = $(':input:hidden[name*="RequestVerificationToken"]');
var data = {};
data['id'] = ids;
data[token.attr('name')] = token.val();   
data['status'] = 'accept';

$.ajax({
          url: '@Url.Action("MultipleChangeSignupStatus" , "Administrator")',
          data: data,
          type: 'POST',
           success: function () {

                }
       });

但在控制器方法中,我得到了一个空值作为 id。 尽管 id 仍为 null,但 status 参数已正确设置为 'accept'

【问题讨论】:

    标签: jquery arrays ajax asp.net-mvc


    【解决方案1】:

    尝试像这样构造您的 data 对象:

    var ids = [1, 2, 3, 4, 5];
    
    var token = $(':input:hidden[name*="RequestVerificationToken"]');
    var data = { };
    data['status'] = 'accept';
    data[token.attr('name')] = token.val();
    
    for (var i = 0; i < ids.length; i++) {
        data['id[' + i + ']'] = ids[i];
    }
    

    【讨论】:

      【解决方案2】:

      添加参数traditional: true

      $.ajax({
        url: '@Url.Action("MultipleChangeSignupStatus" , "Administrator")',
        data: data,
        type: 'POST',
        traditional: true,
        success: function () {
        }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 2012-07-24
        • 2019-01-22
        • 1970-01-01
        相关资源
        最近更新 更多