通过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 });