2015-01-12 4 views
0

Я пытаюсь передать сложный объект контроллеру через ajax Load(), однако im получает нулевой объект на контроллере.JQuery Load не может передать значение контроллеру

Я видел некоторые вопросы по этому поводу, однако они находятся на CodeIgniter, я использую MVC.NET

Вот мой код:

$('#btnLoadMore').on('click', function() { 
     dataObject.PageIndex = dataObject.PageIndex + 1; 
     $("#viewPlaceHolder").load("/home/GetPagedData", 
     { data: JSON.stringify(dataObject), contentType: 'application/json', type: 'post' }); 
    }); 

и этот код, ниже которого находится на кнопке поиска мыши работает хорошо.

$('#btnSubmit').on('click', function() { 
     var startDate = $('#StartDate').val(); 
     var endDate = $('#EndDate').val(); 
     dataObject= { 
      'UserId': 1, 
      'PageIndex': pageIndex, 
      'PageSize': pageSize, 
      'StartDate': startDate, 
      'EndDate': endDate 
     };  
     $.ajax({ 
      url: '@Url.Action("GetPagedData", "Home")', 
      contentType: 'application/json', 
    type: 'post', 
    cache: false, 
    async: true, 

    data: JSON.stringify(dataObject) 
    , 
    success: function (result) { 
     $('#pricing-table').html(result); 
     window.location = "#pricing"; 

    } 
    }); 
    }); 
+2

Быстрый вопрос, что то 'type' для, вы знаете,' jQuery.load' только действительно получает запросы и вставляет возвращаемый HTML непосредственно в DOM ? – adeneo

+0

yup, предполагается, что он вводит возвращенный HTML-код в страницу, у меня также есть разделитель-разделитель, но я не могу передавать значения, несмотря на изменение типа, чтобы получить – SJMan

+0

Ну, данные отправляются, но вы, кажется, используете те же настройки, что и '$ .ajax', которые' load' не имеют. Объект, который вы отправляете, рассматривается как данные, которые вы обычно помещаете в свойство 'data' в' $ .ajax', установка типа или contentType внутри объекта ничего не делает, поскольку contentType - это HTML, а тип - GET , всегда. – adeneo

ответ

2

От jQuery Load article:

Метод POST используется, если данные представлены в виде объекта; в противном случае принимается значение GET.

Вы можете указать в load метод только url, data, complete callback parameters.

Так что ваш код должен выглядеть следующим образом:

$('#btnLoadMore').on('click', function() { 
    dataObject.PageIndex = dataObject.PageIndex + 1; 
    $("#viewPlaceHolder").load("@Url.Action("GetPagedData","Home")", 
    dataObject); 
}); 
Смежные вопросы