Jquery 如何将对象数组从js发送到服务器?

Jquery 如何将对象数组从js发送到服务器?,jquery,.net,asp.net-mvc,json,Jquery,.net,Asp.net Mvc,Json,我的班级 [Serializable] public class VSpecialQualifiers { public VCD LivingStatus { get; set; } public VCD Relationship { get; set; } public string OnSetAge { get; set; } } 我的js函数 $.ajax({ url: url,

我的班级

[Serializable]
    public class VSpecialQualifiers
    {
        public VCD LivingStatus { get; set; }
        public VCD Relationship { get; set; }
        public string OnSetAge { get; set; }
    }
我的js函数

 $.ajax({
                url: url,
                type: 'POST',
                datatype: 'json',
                data: {
                   'arr' : self.specialQualifiers
                }
          });
我的服务器方法

[HttpPost]
        public JSONResult SaveProblem(object[] arr)
        {
          //i cant't cast to target type
        }

如何将对象数组从js传递到服务器?

这并不重要,但看起来您在这里使用的是jQuery,您应该提到这一点。现代浏览器有一个JSON.stringify,可以将JavaScript数组转换为可以传递给服务器的JSON字符串。较旧的浏览器没有此功能,因此您需要包括一个JSON库,如下所示:

然后相同的功能将在所有浏览器中工作

包含后,您将在其中传递数据传递:

data: JSON.stringify(self.specialQualifiers);
请注意,我不知道什么是
self.specialQualifiers
,但它应该解析为数组。您应该在Firefox的Firebug或Chrome/Safari的web inspector中执行
console.log
,以确保这实际上是一个真正的变量


在.net端,您需要一个字符串,然后有一个.net库将该字符串转换为数组。您不能通过HTTP传递本机对象,只能传递字符串。

这并不重要,但看起来您在这里使用的是jQuery,您应该提到这一点。现代浏览器有一个JSON.stringify,可以将JavaScript数组转换为可以传递给服务器的JSON字符串。较旧的浏览器没有此功能,因此您需要包括一个JSON库,如下所示:

然后相同的功能将在所有浏览器中工作

包含后,您将在其中传递数据传递:

data: JSON.stringify(self.specialQualifiers);
请注意,我不知道什么是
self.specialQualifiers
,但它应该解析为数组。您应该在Firefox的Firebug或Chrome/Safari的web inspector中执行
console.log
,以确保这实际上是一个真正的变量


在.net端,您需要一个字符串,然后有一个.net库将该字符串转换为数组。您不能通过HTTP传递本机对象,只能传递字符串。

这里有一些适合我的东西(到后端的C#MVC)

…在js中:

var viewModel = new Object();
viewModel.Items = items; // items is a js array of objects
$.ajax({
    data: JSON.stringify(viewModel),
    type: "POST",
    contentType: 'application/json; charset=utf-8',
    cache: false,
    url: 'CONTROLLERNAME/ACTIONNAME', // replace as necessary here
    success: function (data) {
       // handle the return value, if any, here
    }
});
。。。在控制器中,此处的签名是最重要的:

[HttpPost]
public ActionResult ACTIONNAME(WorksheetVM inputModel) {
…这是一个关联的ViewModel定义,其中WorksheetItemVM是ViewModel DTO,其中包含传递的每个Js对象的字段列表:

public class WorksheetVM {
    public WorksheetItemVM[] Items { get; set; }
}

这里有一些适合我的东西(后端的C#MVC)

…在js中:

var viewModel = new Object();
viewModel.Items = items; // items is a js array of objects
$.ajax({
    data: JSON.stringify(viewModel),
    type: "POST",
    contentType: 'application/json; charset=utf-8',
    cache: false,
    url: 'CONTROLLERNAME/ACTIONNAME', // replace as necessary here
    success: function (data) {
       // handle the return value, if any, here
    }
});
。。。在控制器中,此处的签名是最重要的:

[HttpPost]
public ActionResult ACTIONNAME(WorksheetVM inputModel) {
…这是一个关联的ViewModel定义,其中WorksheetItemVM是ViewModel DTO,其中包含传递的每个Js对象的字段列表:

public class WorksheetVM {
    public WorksheetItemVM[] Items { get; set; }
}

注意:OP的标签是
.net
mvc
——他没有提到Java。谢谢Sean,我的回答仍然有效,我已经用.net替换了Java这个词。通常发布web/BE困惑问题的人都是java人,所以我道歉!注意:OP的标签是
.net
mvc
——他没有提到Java。谢谢Sean,我的回答仍然有效,我已经用.net替换了Java这个词。通常发布web/BE困惑问题的人都是java人,所以我道歉!