ASP.NET MVC4中的Getjson问题



我有一个ASP.NET MVC 4项目,在客户端,我需要通过AJAX发送零件数据,然后显示返回的结果。但是我所拥有的一切都是[]。我正在调试,我敢肯定没有零列表<> collection。有人知道我的错误在哪里吗?

<script>
    $(document).ready(function() {
        $(function() {
            $('#navigation a').click(function () {
                $.getJSON('/Home/GetJobList', function (data) {
                    $("#headerJobRow").text("");
                    $.each(data, function (i, job) {
                        $("#headerJobRow").append("<li>" + job.Title + "</li>");
                    });
                });
            });
        });
    });
</script>
        [HttpGet]
        public JsonResult GetJobList()
        {
            int roll = 0;
            if (Request.Cookies["CityId"] != null) {
                roll = Convert.ToInt32(Request.Cookies["CityId"].Value);
            }
            IQueryable<JobsDb_JobPostings> jobs = roll > 1 ? _jobPostRepo.GetAll().Where(x => x.CityID == roll).OrderByDescending(x => x.PostingID) : _jobPostRepo.GetAll().OrderByDescending(x => x.PostingID);
            return Json(jobs.ToList(), JsonRequestBehavior.AllowGet);
        }

为什么你嵌套ready处理程序

$( document ).ready(function() {
  // Handler for .ready() called.
});

等于

$(function() {
  // Handler for .ready() called.
});

$。getjson是一个异步函数,因此,在服务器端操作返回之前,您的代码将立即执行。

您需要等待.done()回调并在其中访问数据。

$.getJSON('/Home/GetJobList', function (data) {
}).done(function(data){
   $("#headerJobRow").text("");
      $.each(data, function (i, job) {
          $("#headerJobRow").append("<li>" + job.Title + "</li>");
      });
};

编辑:对不起,您需要将 data 参数传递给.done回调。更新了代码以显示。

最新更新