【发布时间】:2019-04-24 14:36:17
【问题描述】:
我有一个巨大的项目列表(15000)要填充到前端下拉的项目中。因此,我进行了 AJAX 调用(在选择公司时触发),并且此 AJAX 调用对控制器中的操作方法进行,此操作方法填充服务项列表并通过响应将其返回给 AJAX 调用。这是我的 AJAX 调用失败的地方。如果我有大约 100 - 500 个项目,则 ajax 调用有效。我该如何解决这个问题?
控制器代码
[HttpPost]
public ActionResult GetCompanyInfo(int Name)
{
try
{
List<SelectList> lists = new List<SelectList>();
//This yields about 100 - 20000 items depending on the company
var serviceItem = cache.getServiceItems(Name).ToList();
serviceItem.Insert(0, null);
ViewBag.SelectedServiceItem = new SelectList(serviceItem, "ID", "Name", model.SelectedServiceItem);
//there are some lists here that not shown for the purpose of demonstation
lists.Add(ViewBag.SelectedServiceItem);
return Json(lists);
}
catch (Exception e)
{
log.Error(e);
return null;
}
}
AJAX 代码:
$("#selectedCompany").change(function () {
$("#dashSpinner").show();
var rule = {
name: $("#selectedCompany").val(),
}
debugger;
$.ajax({
type: 'POST',
data: rule,
url: '@Url.Action("GetCompanyInfo")',
success: function (lists) {
$.each(lists[1], function (i, serviceItem) {
$("#SelectedServiceItem").append('<option value="' + serviceItem.Value + '">' +
serviceItem.Text + '</option>');
});
$.each(lists[7], function (i, product) {
$("#SelectedProduct").append('<option value="' + product.Value + '">' +
product.Text + '</option>');
});
$("#dashSpinner").hide();
}
});
});
【问题讨论】:
-
为什么ajax调用失败?请求是否超时?
-
似乎不是请求超时。
-
你有什么错误?您是否确认您的 api 实际上返回了 15K 项?
-
我收到以下错误:加载资源失败:服务器响应状态为 500(内部服务器错误)
-
恕我直言,“性能问题”是您最少的问题。您希望最终用户如何处理 1500 个选项?
标签: c# ajax asp.net-mvc performance model-view-controller