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

Javascript 通过ajax发送多个对象(使用angular),javascript,c#,jquery,angularjs,ajax,Javascript,C#,Jquery,Angularjs,Ajax,我在对象“数据”中有一个用户输入列表。例如data.username、data.password、data.age 我使用angular将数据对象这样传递到后端 var submits = "=" + JSON.stringify(data); $.ajax({ type: "POST", url: serviceURL, data: submits }); 我又经过两个物体。选择和网格。如何在一个ajax调用中同时传递

我在对象“数据”中有一个用户输入列表。例如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中,您可以使用与现在处理提交相同的方式访问数据1和2。 根据data1和data2中的内容,您可能需要首先对其进行字符串化

第二种选择: 如果您愿意,也可以使用stringify,但更难看的是,一次对所有内容使用stringify,并且只传递字符串:

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

您可以通过以下方式在ajax中发送多个对象/变量:

var submits = "=" + JSON.stringify(data);
$.ajax({
        type: "POST",
        url: serviceURL,
        data: {submits : submits, data1:data1, data2:data2}
});
在您的C中,您可以使用与现在处理提交相同的方式访问数据1和2。 根据data1和data2中的内容,您可能需要首先对其进行字符串化

第二种选择: 如果您愿意,也可以使用stringify,但更难看的是,一次对所有内容使用stringify,并且只传递字符串:

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; }
}
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
    });
然后,在您的web api控制器或MVC控制器上,您可以使用如下方法:

public async Task<IHttpActionResult> Submit(UserSubmissionViewModel model)
您的javascript大致如下所示:

public class UserSubmissionViewModel
{
    public UserSubmissionViewModel() { }

    public UserFormModel User {get;set;}

    public SelectionsModel Selections { get; set; }

    public GridModel Grids { get; set; }
}
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
    });

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

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

public class UserSubmissionViewModel
{
    public UserSubmissionViewModel() { }

    public UserFormModel User {get;set;}

    public SelectionsModel Selections { get; set; }

    public GridModel Grids { get; set; }
}
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
    });
然后,在您的web api控制器或MVC控制器上,您可以使用如下方法:

public async Task<IHttpActionResult> Submit(UserSubmissionViewModel model)
您的javascript大致如下所示:

public class UserSubmissionViewModel
{
    public UserSubmissionViewModel() { }

    public UserFormModel User {get;set;}

    public SelectionsModel Selections { get; set; }

    public GridModel Grids { get; set; }
}
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
    });

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

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;}
}
您只需构建与视图模型结构匹配的javascript对象,然后使用angualr的$http服务发布它。无需担心设置内容类型或Json字符串化。安格尔会处理的

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

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

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;}
}
您只需构建与视图模型结构匹配的javascript对象,然后使用angualr的$http服务发布它。无需担心设置内容类型或Json字符串化。安格尔会处理的

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?@Jasen-在服务器端使用MVC。$.ajax不是角度,而是jQuery库中的一个辅助方法。您不应该在angular控制器中混合使用jQuery。使用$http服务从您的angular代码进行web api调用。您使用的服务器端技术是什么?WebAPI?MVC?@Jasen-在服务器端使用MVC。$.ajax不是角度,而是jQuery库中的一个辅助方法。您不应该在angular控制器中混合使用jQuery。使用$http服务从您的angular代码进行web api调用。@b0redom-我将尝试使用您提到的这部分代码above@bOredom-用将要传递的对象列表更新了我的问题,以及每个对象将拥有的信息。你提到的代码现在会改变吗?代码的意图不会改变。显然,您需要修复字段名以进行匹配。看起来选择只是一个列表,所以如果需要,您可以使用字符串[]而不是实际对象。@b0redom-我将尝试使用您提到的这部分代码above@bOredom-用将要传递的对象列表更新了我的问题,以及每个对象将拥有的信息。你提到的代码现在会改变吗?代码的意图不会改变。显然,您需要修复字段名以进行匹配。看起来选择只是一个列表,所以如果需要,您可以使用字符串[]而不是实际的对象。@Shyju-用将要传递的对象列表和每个对象所包含的信息更新了我的问题。您提到的代码现在是否会根据更新后的问题进行更改?@Ayesha我更新了我的答案,以反映您提供的数据结构。@Shyju-用将要传递的对象列表和每个对象将具有的信息更新了我的问题。根据更新的问题,您提到的代码现在会改变吗?@Ayesha我更新了我的密码 回答以反映您提供的数据结构。