Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC[HttpPost]方法接收空参数_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

Javascript 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

我通过JQuery向MVC HttpPost操作方法发送一个值,但它得到的是一个空值。当我发送一个普通字符串时,它工作正常,但当我发送一个数组时,它会得到空值。这是代码

发送值的代码

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也许我能帮上忙谢谢阿莱哈,你的回答对我找到解决办法很有帮助