2014-09-25 11 views
0

Я пробую каждый способ отправить json из вызова ajax и получить его в Action (я пробовал с помощью веб-метода и имел ту же проблему), действие получило модель с теми же свойствами json. Но переменная, которая получила действие, всегда равна нулю.Отправить json из ajax jquery в контроллер, который получает модель

вот код: Модель:

public class Person 
    { 
     public string Name { get; set; } 
     public int Age { get; set; } 
    } 

Действие:

public ActionResult InsertPerson(Person person) 
    { 

     return View(); 

    } 

И, наконец, вид:

<input id="btnSend" type="button" value="Send" /> 

<script type="text/javascript"> 
$(document).ready(function() { 
    var PersonDto = function (name, age) { 
     this.Name = name; 
     this.Age = age; 
    }; 

    var person1 = new PersonDto("Diego", 27); 


    $('#btnSend').on('click', function() { 
     $.ajax({ 
      cache: false, 
      url: '@Url.Action("InsertPerson", "JsonTest")', 
      type: "GET", 
      contentType: "application/x-www-form-urlencoded", 
      dataType: "text", 
      data: "{person:" + JSON.stringify(person1) + "}", 

      success: function (data) { 

       alert(data); 

      }, 
      error: function (xhr, status, error) { 
       alert(xhr); 
       displayJsonError(xhr); 
      } 
     }); 

    }); 

}); 


</script> 

Все учебник, что я следую показывает, что это путь к сделайте это, я проверяю json в данных, и, похоже, все в порядке, я пытаюсь сделать то же самое в веб-методе И это не сработало, не знаю, что я делаю неправильно.

ответ

0

Вы должны иметь возможность упростить и опубликовать только данные как json. Обратите внимание на тип, contentType и свойства данных в частности.

$.ajax({ 
     cache: false, 
     url: '@Url.Action("InsertPerson", "JsonTest")', 
     type: "POST", 
     contentType: "application/json", 
     data: JSON.stringify(person1), 
     success: function (data) { 
      alert(data); 
     }, 
     error: function (xhr, status, error) { 
      alert(xhr); 
      displayJsonError(xhr); 
     } 
    }); 
+0

Ошибка была в типе contenttype и типе. Данные работали в обоих направлениях. Почему это должен быть тип POST? –

+0

Использование POST помещает данные в тело запроса вместо параметров url. Как правило, когда вы отправляете данные на сервер, вы должны использовать POST. –