Javascript MVC[HttpPost]方法接收空参数
我通过JQuery向MVC HttpPost操作方法发送一个值,但它得到的是一个空值。当我发送一个普通字符串时,它工作正常,但当我发送一个数组时,它会得到空值。这是代码 发送值的代码Javascript MVC[HttpPost]方法接收空参数,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我通过JQuery向MVC HttpPost操作方法发送一个值,但它得到的是一个空值。当我发送一个普通字符串时,它工作正常,但当我发送一个数组时,它会得到空值。这是代码 发送值的代码 function Submit() { var QSTR = { name: "Jhon Smith", Address: "123 main st.", OtherData: [] }; QST
function Submit() {
var QSTR = {
name: "Jhon Smith",
Address: "123 main st.",
OtherData: []
};
QSTR.OtherData.push('Value 1');
QSTR.OtherData.push('Value 2');
$.ajax({
type: 'POST',
url: '/Omni/DoRoutine',
data: JSON.stringify({ obj: 'Reynor here!' }),
// this acctually works
// and at the action method I get the object[]
// with object[0] = 'Reynor here!'
// but when I use the object I really need to send I get null
data: JSON.stringify({ obj: QSTR }), //I get null
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: function (msg) {
alert('ok');
},
error: function (xhr, status) {
alert(status);
}
});
}
这是操作方法代码:
[HttpPost]
public ActionResult DoRoutine(object[] obj)
{
return Json(null);
}
解决方案是什么?为什么会发生这种情况?
谢谢QSTR是一种复杂类型,因此您需要在post方法中使用复杂数据
public class QSTR
{
public string name { get; set; }
public string Address { get; set; }
public object[] OtherData { get; set; }
}
[HttpPost]
public ActionResult DoRoutine(QSTR obj)
{
return Json(null);
}
但是,如果希望只接收其他数据的数组,则应仅在ajax中发送:
$.ajax({
data: JSON.stringify({ obj: QSTR.OtherData }),
// other properties
});
我知道这是一个可能的解决办法,但我仍然不明白为什么。我在asp.net上有一个类似的方法,实际上它是一个[WebMethod],按照我最初的方法,它工作得很好,我的意思是我得到了object[]参数。为什么它不能在MVC上使用[HttpPost]方法?如果我想发送回服务器的信息意味着不同的数据结构,这取决于几个因素,该怎么办?thanks@Overlord也许我能帮上忙谢谢阿莱哈,你的回答对我找到解决办法很有帮助