Jquery$.ajax()调用将具有其他参数的关联数组传递给MVC控制器失败
Jquery $.ajax() call to pass associative array with other params to MVC controller failing
我有一个通用调度器,它接收参数,然后生成$.ajax()正如您所看到的,我正在循环使用参数来构建数据。
function dispatch(controller, action, param1, param2,...) {
var args = '', pg = 1, id = '';
var l = arguments.length;
var data = {};
for (var i = 2; i < arguments.length; i += 2) {
data[arguments[i]] = arguments[i + 1];
}
$.ajax({
type: "POST",
url: "/" + (controller + "/" + action,
data: data,
dataType: "json",
success: function (res) {
alert('success');
},
error: function (xhr, status, error) {
alert('error!');
}
});
}
这就是我的称呼:
dispatch("XYZ", "AddGuests", "id", 10, "name", "Bob");
一切都按预期进行,我将所有参数都放回了MVC 3控制器中。现在我需要将多维关联数组作为参数传递给我的控制器。我想使用我用于其他调用的单个通用调度程序。但不知怎么的,关联数组参数为null。
基本上,我想在控制器的List参数中发布一个guests数组。
准备关联数组数据的代码:
var guest = {};
var guests = [];
for(var i=0;i<2;i++){
var name = GetName();
var email = GetEmail();
guest = { 'Email': email, 'Name': name };
guests.push(guest);
}
循环结束时会给我,说:
{
{'Email':"bob@zyz.com", 'Name':"Bob"},
{'Email':"tom@zyz.com", 'Name':"Tom"}
}
这是对调度员的新呼叫:
dispatch("XYZ", "AddGuests", "id", 10, "guests", JSON.stringify(guests));
这是我的控制器:
[HttpPost]
public ActionResult AddGuests(string id, List<SelectedGuest> guests){
//save guests
}
[Serializable]
public class SelectedGuest
{
public string Email { get; set; }
public string Name { get; set; }
}
当我查看httpfox时,我看到了发布的正确值:
id 10
guests [{"Email":"bob@zyz.com","Name":"Bob"},{"Email":"tom@zyz.com","Name":"Tom"}]
如果我这样做,我会将客人正确地传递给我的管理员:但这限制了我只能传递guests数组,而不能传递其他参数。
data = JSON.stringify(guests);
我做错了什么?感谢阅读。
如果使用JSON.stringfy(guests)有效,为什么不将其与其他不需要字符串化的参数组合到另一个JSON对象中呢?
data = { "id": 10, "Guests": JSON.stringify(guests) };
或者,您可以构造一个javascript对象来组合这些对象,并在此基础上调用stringify。
相关文章:
- 多维关联数组的最后一个索引
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 具有关联数组数据集的D3.js表
- 后关联数组使用jquery ajax
- 返回一个关联数组,而不是mongoose中的文档数组
- 如何在 Angular JS 中从关联数组创建多个复选框
- 存储在变量中的关联数组中的访问键
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- 在主要的JavaScript引擎中,在JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少
- 关联数组,并使用父数组d作为selection.data()的源数组
- 获取关联数组的标签
- JavaScript:如何在最接近值的关联数组中查找键
- 单击时显示关联数组的元素
- 关联数组 - 使用图像滑块显示键值
- Javascript从关联数组中查找最低数字(气泡排序方法)
- AngularJS过滤器不适用于我的数据:关联数组
- 获取关联数组中当前函数的键
- 如何按一个仍保持字母顺序的特性值(另一个特性值)对关联数组进行排序
- 正在检查JavaScript中是否存在关联数组
- 二维对象/将数组关联到三维对象Javascript中