我有一个庞大的项目列表(15000)将填充在前端的项目下拉列表中。因此,我进行了一个ajax调用(根据公司的选择触发),并对控制器中的action方法进行了这个ajax调用,这个action方法填充服务项列表,并通过响应将其返回到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();
}
});
});