2014-01-30 2 views
0

Привет У меня есть запрос JSON, как здесь:JSon Принятые данные = NULL

$.ajax({ 
     url: "/DeviceUsage/FreeDevice", 
     type: "POST", 
     data: JSON.stringify({ data: Ids }), 
     error: function (data) { 
      alert("error " + data); 
     }, 
     success: function (data) { 
      if (data === "") { 
       alert("succes") 
      } 
      else { 
       alert(data); 
      } 
     } 
    }); 

где Идентификаторы = var Ids = new Array(); (полный Интс)

Мой Json выглядит следующим образом:

{"data":[38,40,41]} 

метод где я получаю Json:

[HttpPost] 
public JsonResult FreeDevice(FreeDeviceModel m) 
{ 
    return Json(""); 
} 

и мой ViewModel:

public class FreeDeviceModel 
{ 
    public List<int> data { get; set; } 
} 

Я перекрестно проверили все с Json валидатор, Json2C#

и Eveything выглядит правильно, так почему ничего не получаемые помехи методом FreeDevice?

Для выяснения у меня есть проблемы с этим: Data shoudl be List of 3 elements but is Null

данных shoudl быть списком из 3-х элементов, но Null

+0

возвращение JSon (м) ; – Hackerman

+0

Я обновил свой вопрос. Я имею в виду, что freeDevice ничего не получает – szpic

+0

Итак, вызов ajax вводит условие, в котором он предупреждает данные, верно? – Hackerman

ответ

1

Проверить код ниже, он должен работать

JSon вызов

var FreeDeviceModel = {}; 
FreeDeviceModel.data = new Array(); 
FreeDeviceModel.data[0] = 39; 
FreeDeviceModel.data[1] = 40; 
FreeDeviceModel.data[2] = 41; 
var object = JSON.stringify({ FreeDeviceModel: FreeDeviceModel }); 
$.ajax({ 
    type: "POST", 
    url: "/Home/FreeDevice", 
    contentType: 'application/json; charset=utf-8', 
    data: object, 
    dataType: 'json', 
    cache: false, 
    error: function (data) { 
     alert("error " + data); 
    }, 
    success: function (data) { 
     if (data === "") { 
      alert("succes") 
     } 
     else { 
      alert(data); 
     } 
    } 
}); 

Контроллер вызова

[HttpPost] 
    public JsonResult FreeDevice(FreeDeviceModel FreeDeviceModel) 
    { 
     return Json(""); 
    } 
+0

Хорошо, я принимаю этот ответ. Вы писали то же самое, что я написал в своем ответе;) ContentType отсутствовал! – szpic

0

Вы попробуйте установить DATATYPE в формат JSON

dataType: 'json', 
data: {"data":[38,40,41]} 

Надеется, что это помогает ...

+0

Жесткое кодирование данных не является опцией;) – szpic

+0

Я хотел добавить ваш json напрямую, не используя stringify и установить dataType для json :) –

+0

Я знаю, проверил его, но это не дало эффекта – szpic

-1

Только попробуйте:

data: JSON.stringify(Ids), 
+0

после этой модификации все еще null – szpic

0

ОК. Добавление этой строки:

contentType: "application/json; charset=utf-8", 

неподвижного все!

0

Вы должны попробовать что-то вроде этого:

public JsonResult FreeDevice(string details) 
{ 
FreeDeviceModel tempRecord = JsonConvert.DeserializeObject<List<FreeDeviceModel>>(details); 
} 
Смежные вопросы