gpt4 book ai didi

javascript - Jquery $.ajax() 调用将关联数组与其他参数传递给 MVC Controller 失败

转载 作者:行者123 更新时间:2023-11-28 10:17:06 25 4
gpt4 key购买 nike

我有一个通用调度程序,它接受参数然后生成 $.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 Controller 中。现在我需要将多维关联数组作为参数传递给我的 Controller 。我想使用用于其他调用的单个通用调度程序。但不知何故,我的关联数组参数为 null。

基本上,我想将一个 guest 数组发布到我的 Controller 的 List 参数中。

准备关联数组数据的代码:

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

这是我的 Controller :

[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"}]

如果我这样做,我会将访客正确传递到我的 Controller :但这限制我只能传递 guest 数组而不传递其他参数。

data = JSON.stringify(guests);

我做错了什么?感谢您的阅读。

最佳答案

如果使用 JSON.stringify(guests) 有效,为什么不将其与不需要字符串化的其他参数组合到另一个 JSON 对象中?

data = { "id": 10, "Guests": JSON.stringify(guests) };

或者,您可以构造一个 javascript 对象来组合这些对象并对其调用 stringify。

关于javascript - Jquery $.ajax() 调用将关联数组与其他参数传递给 MVC Controller 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com