2014-11-12 4 views
0

Мне нужно получить данные от контроллера до представления в формате JSON, но это не работает, и я не понимаю, почему.Невозможно получить данные от контроллера как json

Мой контроллер (я прошу его действия индекса):

public class HomeController : Controller 
    { 
     CompanyTicketsDb _db = new CompanyTicketsDb(); 

     public ActionResult Index() 
     { 
      var model = 
       _db.Tickets 
        .Select(r => new TicketListViewModel 
        { 
         Id = r.Id, 
         Name = r.Name, 
         Description = r.Description, 
         CompanyName = r.CompanyName, 
         Status = r.Status, 
         CompanyId = r.CompanyId, 
        }); 
      if (Request.AcceptTypes.Contains("application/json")) 
      { 
       return Json(model, JsonRequestBehavior.AllowGet); 
      } 

      return View(model); 
     } 
    } 

И мой взгляд (это частичный вид) выглядит Лик, что (тестовый режим):

@model IEnumerable<MvcApplication4.Models.TicketListViewModel> 

<button id="Button1">asd</button> 

@section scripts { 
<script src="~/Scripts/knockout-3.2.0.js"></script> 
    <script> 
     $(document).ready(function() { 
      $("#Button1").click(function (evt) { 
       type: 'GET' 
       url = '/'; 
       dataType = 'json'; 
       contentType = 'application/json'; 
       success = function (data) { 
        alert(data); 
        console.log("asd"); 
       }; 
       error = function() { alert("Error retrieving employee data!"); }; 

      }); 
     }); 

    </script> 

} 

Вещь что я не получаю никакого сообщения (а не allert или консольного журнала), чтобы проверить, верен ли JSON, поэтому после этого я могу использовать их для заполнения View.

+1

Если мой ответ решил вашу проблему, то plz отметьте его как ответ. –

+0

Не удалось решить. Есть некоторые другие проблемы. в настоящий момент пытается ее решить. Получены синтаксические ошибки для запятой и ':', поэтому добавлен $ .ajax ({- он не дает ошибок, но я до сих пор не получаю никакого результата: < – CikLinas

+0

Похоже, что мне удалось исправить. – CikLinas

ответ

7

Потому что ваш синтаксис неверен. Вы используете '=', но вы должны использовать ':'.

@model IEnumerable<MvcApplication4.Models.TicketListViewModel> 

<button id="Button1">asd</button> 

@section scripts { 
<script src="~/Scripts/knockout-3.2.0.js"></script> 
<script> 
    $(document).ready(function() { 
     $("#Button1").click(function (evt) { 
      $.ajax({ 
       type: 'GET' 
       url : '/'; 
       dataType : 'json'; 
       contentType : 'application/json'; 
       success : function (data) { 
       alert(data); 
       console.log("asd"); 
      }; 
      error : function() { alert("Error retrieving employee data!"); }; 

     }); 
    }); 

</script> 

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