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人,所以我道歉!