如何使用ajax调用将对象传递给控制器

时间:2013-04-29 04:53:43

标签: jquery ajax asp.net-mvc

我想将一个对象传递给控制器​​并检索控制器中的值。 我已定义如下:

Html代码:

 var positionarray = [];

使用Javascript:

 $("#button").live('click',function(){
     positionarray.push({
         id: sessionStorage.getItem('id'),
         value: $("#input").val() 
     });
 });

 // on save button click
 $.ajax({
       type: "GET",                                                 
       url:"/Bugs/Position",                                                 
       data: {
           array:positionarray      
       },
       cache: false,
       dataType: "json",
       contentType: "application/json; charset=utf-8",
       success: function (json) {

       }
 });

但我无法检索控制器中的值。它变得无效。

3 个答案:

答案 0 :(得分:3)

试试这个: - 你传递一个对象数组,所以你应该做HTTPPost而不是HttpGet(这将适用于原始类型的数组,比如int,strgin等列表)通过查询字符串发送它(记住查询的限制)串)。 尝试使用HTTPPost

 $.ajax({
       type: "POST",                     
       url:"Home/Position",                                                 
       data: JSON.stringify({
              array: positionarray
       }),
       cache: false,
       dataType: "json",
       contentType: "application/json; charset=utf-8",
       success: function (json) {

       }

[HTTPPost]
public void Position(YourClass[] array){...

答案 1 :(得分:0)

试试这个:

$.ajax({
       type: "GET",                                                 
       url:"/Bugs/Position",                                                 
       data: 'array='+positionarray      
       cache: false,
       dataType: "json",
       contentType: "application/json; charset=utf-8",
       success: function (json) {

       }
});

答案 2 :(得分:0)

试试这个:

您的ajax call必须处于按钮点击功能,然后才会有效,

在您的代码中,ajax call会在您点击之前运行,因此会传递 null 控制器

$("#button").live('click',function(){
     positionarray.push({
         id: sessionStorage.getItem('id'),
         value: $("#input").val() 
     });


    // on save button click
    // this code must run after `button click` and after pushing data in
    // positionarray variable
    $.ajax({
           type: "GET",                                                 
           url:"/Bugs/Position",                                                 
           data: {
               array:positionarray      
           },
           cache: false,
           dataType: "json",
           contentType: "application/json; charset=utf-8",
           success: function (json) {

           }
    });// here ajax function code ends

});// here button click function ends