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

本文关键字:对象 ajax 使用 angular 通过 | 更新日期: 2023-09-27 18:26:23

我有一个对象"data"中的用户输入列表。(例如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(使用angular)发送多个对象

假设您的服务器端中有这样的视图模型

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<string> Selections {set;get;}
  public List<string> Grid {set;get;}
}

以及类似的MVC操作方法

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

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

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

您可以使用以下在ajax中发送多个对象/变量

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

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

第二个选项
如果你想(但更难看),你也可以一次在所有东西上使用字符串,只传递字符串:

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

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

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

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<IHttpActionResult> 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
    });