2013-10-07 2 views
1

Я попробовал АЯКС пост с моей точки зрения, как показано ниже (с помощью JQuery).Всегда получать нулевые значения в контроллер для АЯКС пост

Полное решение Here.

$(document).ready(function() { 
       var kk = { 
        Address1: "423 Judy Road", 
        Address2: "1001", 
        City: "New York", 
        State: "NY", 
        ZipCode: "10301", 
        Country: "USA" 
       }; 
       console.log(JSON.stringify(kk)); 
       $.ajax({ 
        url: 'Check', 
        type: 'POST', 
        data: JSON.stringify(kk), 
        dataType:"json", 
        contentType: 'application/json; charset=utf-8', 
        success: function (data) { 
         alert(data.success); 
        }, 
        error: function() { 
         alert("error"); 
        } 
       }); 
      }); 

И получил его в контроллер (метод всегда вызывается)

public ActionResult Check(AddressInfo addressInfo) 
     { 
      return Json(new { success = true }); 
     } 

Модель here, Но когда я попытался получить доступ (Останов проверил) свойства объекта (AddressInfo) он всегда показывал значение null. Я старался, не стягивая и стягивая. Сейчас я изучаю MVC и начинаю. Пожалуйста, помогите

ответ

1

Причина это не работает, потому что вы используете ASP.NET MVC 2 и поддержку модели связывания с JSON не был добавлен до ASP.NET MVC 3.

Вы можете добавить эту функциональность ASP.NET MVC 2, хотя. Фил Хаак имеет пост с описанием, что, со ссылкой на пример кода в конце: http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx

+0

Большое спасибо ... –

+0

Могу ли я использовать JSON.stringify (person) вместо $ .toJSON (person). –

+0

Да, они делают то же самое в браузерах, которые поддерживают JSON.stringify. В старых браузерах (до IE8, по существу) вам нужно включить json2.js, чтобы использовать это. –

0

пытаются передать данные в строку запроса так, как это:

$(document).ready(function() { 
     var data = "Address1=423 Judy Road&Address2=1001&City=New York&State=NY&ZipCode=10301&Country=USA"; 

     $.ajax({ 
      url: 'Check', 
      type: 'POST', 
      data: data, 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       alert(data.success); 
      }, 
      error: function() { 
       alert("error"); 
      } 
     }); 
    }); 
+0

Я хочу передать данные только в формате JSON. Вот как работает большинство сообщений ajax. –

+0

Итак, не передавайте строку JSON, а объект JSON. – Flea777

+0

все еще его нулевое значение, получаемое в контроллере –

0

Добавить dataType в json в Ajax и передать addressInfo в data parameter как,

$.ajax({ 
    url: 'Check', 
    type: 'POST', 
    datatype:'json', 
    data: {addressInfo:kk}, 
    success:function(data){ 
    .... 
    .... 
}); 
+0

Но все еще получая нуль –

+0

Я хочу спрятать данные? –

+0

Нет, в этом нет необходимости, но проверьте в 'console', что ваш' ajax url' попадает в 'server' или нет? –

1

Попробуйте следующий код:

return this.Json(new { success = true }, JsonRequestBehavior.AllowGet); 

Если это не работает, просто измените параметр запроса с AddressInfo на String со стороны контроллера. Это определенно работает!

+0

OMG это помогает ALOT спасибо – Neel

+0

Спасибо, друг! Я рад, что может быть полезным – Sanket

+0

srsly сногсшибательного ответа я искал его в течение последних нескольких дней, и у дал soultion благодаря alottttttt – Neel

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