通过ajax发送多个对象(使用angular)

我有一个对象’数据’中的用户输入列表。 (例如data.username,data.password,data.age)

我正在使用angular将数据对象传递给后端。

var submits = "=" + JSON.stringify(data); $.ajax({ type: "POST", url: serviceURL, data: submits }); 

我正在传递另外两个对象。 选择和网格。 我如何在一次ajax通话中将所有这三个一起传递? 或者我必须独立转移它。 如果我单独转移这些细节会影响性能吗?

我可以做这样的事情在一个ajax调用中将对象发送到一起吗?

 var data = {}; data[0] = data1; data[1] = data2; 

如何在服务器端使用c#单独检索它,如果它们一起传递的话。

下面是我需要传递的3个物体

 data -->> ["Raul","New York","31"] selections-->> ["dy.txt","my.txt","yy.txt"] grid--> ["sesion","id"] 

您可以在ajax中发送多个对象/变量:

 var submits = "=" + JSON.stringify(data); $.ajax({ type: "POST", url: serviceURL, data: {submits : submits, data1:data1, data2:data2} }); 

在C#中,您可以像处理提交一样访问data1和2。 根据data1和data2中的内容,您可能需要先将其字符串化。

第二种选择
如果你愿意,你也可以(但它更难看)一次性使用stringify并只传递字符串:

 data = {}; data["data1"] = data1; data["data2"] = data2; var submits = "=" + JSON.stringify(data); 

假设您在服务器端有一个这样的视图模型

 public class CreateUserViewModel { public string UserName{set;get;} public string Location {set;get;} public int Age {set;get;} } public class RegisterViewModel { public CreateUserViewModel User {set;get;} public List Selections {set;get;} public List Grid {set;get;} } 

和像这样的MVC动作方法

 public ActionResult Create(RegisterViewModel model) { // read model and save and return some JSON response } 

您可以简单地构建与视图模型的结构匹配的javascript对象,并使用angualr的$http服务发布它。 无需担心设置内容类型或Json字符串。 Angualr会照顾它。

 var model={ User : {} ,Selections :[], Grid=[] }; model.User.Age =23; model.User.UserName ="test"; model.User.Location="New York"; model.Selections.push("dy.txt"); model.Selections.push("some.txt"); model.Grid.push("session"); model.Grid.push("id"); var url="replcaeUrltoYourActionMethodHere"; $http.post(url, model) .then(function(response) { // do something with the response // var result= response.data }); 

您是否在服务器上使用WebApi或MVC? 如果是这样,最简单的方法是创建一个类,该类包含您需要发送的3个实体并利用内置的模型绑定

因此,在您的示例中,您列出了看起来像用户表单,选择和网格的内容。 我不确定最后两个是什么,但示例Model可能看起来像这样:

 public class UserSubmissionViewModel { public UserSubmissionViewModel() { } public UserFormModel User {get;set;} public SelectionsModel Selections { get; set; } public GridModel Grids { get; set; } } 

然后在你的web api控制器或你的MVC控制器上你有一个这样的方法:

 public async Task Submit(UserSubmissionViewModel model) 

你的javascript会像这样大致相似:

 var toSend = {"UserFormModel":data, "SelectionsModel":selections, "GridModel":grids}; $.ajax({ type:"POST", data:toSend, //<--- you might need to JSON.stringify this, cant test this code at the moment url:serviceURL //<-- Calls your Submit method on the controller });