1
我有一個通用的調度程序,它接受參數,然後使$ .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控制器。 現在我需要將multidimentional關聯數組作爲參數傳遞給我的控制器。 我想使用我用於其他調用的單個通用調度程序。 但不知何故,我得到關聯數組參數爲空。
基本上我想發佈一個賓客數組到我的控制器的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':"[email protected]", 'Name':"Bob"},
{'Email':"[email protected]", '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":"[email protected]","Name":"Bob"},{"Email":"[email protected]","Name":"Tom"}]
如果我這樣做,我得到正確地傳遞給我的控制器來賓: 但是,這限制了我通過剛纔客人陣列不其他參數。
data = JSON.stringify(guests);
我在做什麼錯了?謝謝閱讀。