2016-05-03 3 views
1

мой Аякса кодпараметры контроллера MVC всегда нуль

function gonder() { 
    var params = { 
     DonationInfo: { 
      name: $('#name').val(), 
      lastname: $('#lastname').val(), 
      phone: $('#phone').val(), 
      type: $('#type').val(), 
      amounth: $('#amounth').val(), 
      quentity: $('#quentity').val() 
     } 
    }; 
    $.ajax({ 
     url: '@Url.Action("Index", "Benafactor")', 
     type: 'POST', 
     async: true, 
     data: JSON.stringify(params), 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function (data) { 
      alert(data.success); 
      $('#target').html(data); 
     }, 
     error: function() { 
      alert("error"); 
     } 
    }); 
} 

МОЯ Контроллер

[System.Web.Http.HttpPost] 
    public ActionResult Index([FromBody] Mymodel data) 
    { 
     return Json(new { success = true }); 

    } 

также я попытался шпагатом

и здесь MyModel

public class Mymodel 
{ 
    public string name { get; set; } 
    public string lastname { get; set; } 
    public string phone { get; set; } 
    public string type { get; set; } 
    public string amounth { get; set; } 
    public string quentity { get; set; } 
} 

я старался , искал все Тот же вопрос, но ничего не работа для меня, пожалуйста, помогите я могу видеть данные в запросе полезной нагрузки, но не может получить параметры в контроллер

+0

использование JQuery после проверки этой ссылке https://api.jquery.com/jquery.post/ – rashfmnb

+0

Даже проще, чем ответы, удалить 'опцию contentType' и использовать' данные: $ («форма»). serialize(), '(.serialize()' правильно сериализует ваши элементы управления формой json) –

ответ

3

При сериализации объекта (params) в формате JSON, то структура модели MVC ActionResult параметра Я (Mymodel) и объект (params) должен быть такой же структуры, в вашем коде params и Mymodel не такая же структура. Сделать это же позволит решить проблему

var params = { 
      name: $('#name').val(), 
      lastname: $('#lastname').val(), 
      phone: $('#phone').val(), 
      type: $('#type').val(), 
      amounth: $('#amounth').val(), 
      quentity: $('#quentity').val() 
     }; 
+0

спасибо, что это работает –

+0

Мне будет нужно ждать 8 минут –

+0

Лучшее решение приведено ниже –

0

JSON.stringify не надо data: params.DonationInfo

1

использовать это:

var params = { 
     name: $('#name').val(), 
     lastname: $('#lastname').val(), 
     phone: $('#phone').val(), 
     type: $('#type').val(), 
     amounth: $('#amounth').val(), 
     quentity: $('#quentity').val() 
    } 

для сложного объекта, его лучше использовать переменные, чем включать его в AJAX метод

0
function gonder() { 
    var data= { 

      name: $('#name').val(), 
      lastname: $('#lastname').val(), 
      phone: $('#phone').val(), 
      type: $('#type').val(), 
      amounth: $('#amounth').val(), 
      quentity: $('#quentity').val() 

    }; 
    $.ajax({ 
     url: '@Url.Action("Index", "Benafactor")', 
     type: 'POST', 
     async: true, 
     data: JSON.stringify(params), 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function (data) { 
      alert(data.success); 
      $('#target').html(data); 
     }, 
     error: function() { 
      alert("error"); 
     } 
    }); 
} 

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

[HttpPost] 
    public ActionResult Index(Mymodel data) 
    { 
     return Json(new { success = true }); 

    } 
Смежные вопросы