ajax调用向控制器发送空值

时间:2016-07-15 11:40:01

标签: ajax asp.net-mvc

我的模特:

    public class Hello
{
    public List<string> name;
    public List<string> phone;
    public List<string> contact;

}

我的控制器代码是

  public ActionResult Home(Hello obj) // obj is coming out to be null
    {

    }

我的脚本是

     var names =[];
     var phones =[];
     var contacts = [];

     // some code to fill the arrays 

    var obj = [{
            name: names,
            phone: phones,
            contact: contacts,
          }];
        debugger;
        $.ajax({
            cache: false,
            url: 'Home',
            data: { obj:obj },
            success: function (data) {
                var response = JSON.parse(data);
                window.location = 'Download?fileGuid=' + response.FileGuid
                                  + '&filename=' + response.FileName;
            }
        })

我可以在调试器中看到数据存储在数组中,但是当我向控制器发送数据时,obj为null,有人可以建议我哪里出错吗?

2 个答案:

答案 0 :(得分:1)

你的代码背后有对象,所以不要传递Hello对象的数组。

并且还使用POST请求,因为GET请求没有消息体。

请使用以下

var obj = {
            name: ['1', '2', '3'],
            phone: ['234324', '34343243', '3434234234'],
            contact: ['Test1', 'Test2', 'Test3']
        };
        debugger;
        $.ajax({
            type:'POST',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            url: 'Home',
            data:JSON.stringify({ obj: obj }),
            success: function (data) {
                var response = JSON.parse(data);
               // window.location = 'Download?fileGuid=' + response.FileGuid
                                  + '&filename=' + response.FileName;
            }
        })


public class Hello
{
    public List<string> name { get; set; }
    public List<string> phone { get; set; }
    public List<string> contact { get; set; }

}

答案 1 :(得分:-1)

其实我解决了这个问题,我不得不设置

传统:真,

在我的ajax电话中