无法从控制器获取数据作为json

时间:2014-11-12 10:18:02

标签: jquery ajax json model-view-controller controller

我需要从控制器获取数据到View作为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 个答案:

答案 0 :(得分: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>

}