我有一个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回调。更新了代码以显示。