2013-06-06 3 views
0

У меня есть следующий объект json, извините за изображение;Json опубликовал массив с нулевыми значениями

enter image description here

JQuery код у меня выглядит следующим образом;

var data = { 
    table: table, 
    favour: $("[name='radFavour']:checked").val(), 
    data: jsonObj 
}; 

$.ajax({ 
    url: appDomain + "/Compare/Ajax_Update", 
    type: "post", 
    dataType: "json", 
    data: data 
}); 

Код C# выглядит;

[HttpPost] 
public void Ajax_Update(CompareFVM fvm) 
{ 
} 

FVM содержит строку для таблицы и для удобства и данные для этих двух свойств.

Для «данных» у меня есть следующее в FVM;

public List<CompareItem> data { get; set; } 

И товар;

public class CompareItem 
{ 
    public int prodId { get; set; } 
    public int stageId { get; set; } 
    public string value { get; set; } 
    public string property { get; set; } 
} 

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

Таким образом, данные, которые я отправляю обратно, не используются для элементов массива, но для отдельных полей.

Любые идеи?

+0

Я пробовал список, IEnumerable и массив. Я также попробовал JSON.stringify. Ничего не работает – griegs

ответ

1

при вызове ajax, передайте имя объекта как 'fvm' (имя должно совпадать с параметром кода C#). также, пожалуйста, проверьте, что json abject использует JSON.stringify (данные).

var fvm = { 
     table: table, 
     favour: $("[name='radFavour']:checked").val(), 
     data: jsonObj 
    }; 

    $.ajax({ 
     url: appDomain + "/Compare/Ajax_Update", 
     type: "post", 
     dataType: "json", 
     data: JSON.stringify(fvm) 
    }); 
+0

Все имена соответствуют тому, что передается. Как я уже сказал, я переношу два объекта обратно в «данные». На конце C# мой список FVM.data имеет два объекта. Оба содержат значения по умолчанию, а не фактические данные. Таким образом, он знает, что есть два объекта, но отображение закручивается. – griegs

+0

И я уже попробовал подтянуть, и это тоже не сработало. – griegs

+0

Я думаю [эта ссылка] (http://stackoverflow.com/questions/11736431/make-cross-domain-ajax-jsonp-request-with-jquery/11736771#11736771) может помочь вам – Paritosh

0

Просто исходя от того, что подобные вещи, которые я сделал в прошлом, я бы структурировать ваш код так:

// if your C# is 
public void Ajax_Update(CompareFVM fvm) { 
} 

// then your ajax call should be along the lines of 
$.ajax({ 
    data : { 
     'data' : [ 
      { /* compareItem */ }, 
      { /* compareItem */ }, 
      // ... 
     ]   
    } 
}) 

Дело существо, ваш C# конечная точка ожидает объект, так вы должны дать ему объект JSON.

Если ваш C# класс

public class CompareFVM { 
    public IList<CompareItem> data { get;set; } 
} 

тогда ваш соответствующий JSON должен быть:

{ 'data' : [] } 

где .data бы массив CompareItem объектов.

например.

{ 
    'data' : [ 
     {'prodId':'3175','stageId':'19045','value':'TUE','property':'despatchDay'}, 
     {'prodId':'3175','stageId':'19045','value':'TUE','property':'despatchDay'} 
    ] 
} 
+0

Я пробовал hardcodeing данные массива, как у вас здесь, и массив имеет правильный счетчик элементов, но данные пустые – griegs

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