2013-09-30 3 views
0

Я пытаюсь передать данные Json в таблицу html внутри моего представления. По какой-то причине я не могу заставить его работать. Вот мой код. У меня есть боковая панель «групповые коды», и таблица должна фильтроваться на основе выбранного группового кода. Когда я «предупреждаю (данные)», я получаю данные, которые мне нужны, только если я сериализую, как показано ниже, иначе я просто получаю [objet] [Object]. Кроме того, если я $ («хе»). HTML (данные) возвращают данные, но в формате JSON и явно не в внесенной структуреНе удается передать данные Json в MVC View

--Controller 

[HttpPost] 
    public JsonResult Index(string grpCode) 
    { 
     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     var data = serializer.Serialize(new EmployeeDAL().EmployeeData(grpCode).employeeList);  
     return Json(data);   
    } 
--View 

$('#tbl tr td').click(function() { 
      var selection = $(this).text().trim(); 

      $.ajax({ 
       type: "Post", 
       url: "/Home/Index/", 
       dataType: "Json", 
       data: { grpCode: selection },      
       success: function (data) {      
        alert(data); 
        $.each(data, function (index, item) { 
         var row = $("<tr />"); 
         $("<td />").text(item.First_Name).appendTo(row); 
          $("<td />").text(item.Last_Name).appendTo(row); 
          $("<td />").text(item.Work_Pager).appendTo(row); 
          $("<td />").text(item.Effective_Date).appendTo(row);       
         row.appendTo("table.xx"); 
        }); 
<table class="xx"> </table> 

--Sample JSon [{"Last_Name": "Brown", 
    "First_Name": "Rodney" "Work_Pager": "43343"}] 

Я просто использую этот „мусор“ таблицу для тестирования , Когда я получу его для работы, реальная таблица будет структурирована нормально

ответ

0

JsonResult автоматически сериализует ваш объект в JSON. Вы должны использовать:

public JsonResult Index(string grpCode) 
{ 
    var data = new EmployeeDAL().EmployeeData(grpCode).employeeList;  
    return Json(data);   
} 

Edit: Если оповещение данных дает [object] [Oject] то, что возвращается не вероятно, простой список элементов, но сложный объект.

Например:

{"items":[{"name":"test","completed":false},{"name":"test2","completed":true}]} 

то массив элементов (тест и TEST2) будет содержаться в data.items, и вы могли бы получить длину массива с помощью: alert(data.items.length);

Для Отладка Я рекомендую использовать Chrome и специально использовать вкладки «Сеть и источники».

+0

thats то, что я использовал, но тогда мое предупреждение (данные) вернет [object] [Oject], поэтому я сериализую, чтобы иметь возможность просмотреть результат в оповещении – CSharper

+0

Это возвращаемое по умолчанию значение метода 'toString' , Чтобы заставить его сказать что-то другое, вам придется перезаписать его. Я бы рекомендовал использовать 'console.log (data)' для отладки вместо предупреждения –

+0

Если вы хотите использовать предупреждения, вы можете использовать 'JSON.stringify' ex:' alert (JSON.stringify (data)) ' –

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