我可能对这里实际发生的事情有误,但我有 3 个 Html.dropdownlists。我使用 jquery 来处理确实有效的过滤。但是,我认为有一些奇怪的行为可能是因为在调用下一个函数之前数据没有完成加载。
例如:
一些背景。公司:拥有数个外地办事处 外地办事处:拥有数个设施 所以从逻辑上讲,当您更换公司时,外地办事处应该更改,然后更改设施。
$(function () {
$(document).ready(function () {
var cid = $("#CompanyId").val();
$.post("/ManifestSearch/GetFilteredFieldOffices", { id: cid }, function (data) {
$("#FieldOfficeId").loadSelect(data);
});
var fid = $("#FieldOfficeId").val();
$.post("/ManifestSearch/GetFilteredFacilities", { id: fid }, function (data) {
$("#FacilityId").loadSelect(data);
});
});
});
现在,当页面加载时,一切看起来都很好。所有下拉列表都有正确的数据。
当我换公司时,这个电话。
$(function () {
$('#CompanyId').change(function () {
var cid = $(this).val();
$.post("/ManifestSearch/GetFilteredFieldOffices", { id: cid }, function (data) {
$("#FieldOfficeId").loadSelect(data);
});
var fid = $("#FieldOfficeId").val();
$.post("/ManifestSearch/GetFilteredFacilities", { id: fid }, function (data) {
$("#FacilityId").loadSelect(data);
});
});
});
这会将外地办事处更改为正确的列表,但是设施会更改为公司更改之前设置的任何外地办事处。我对 jquery 的了解还不够,无法弄清楚到底发生了什么,但我的直觉告诉我,这两个帖子是同时发生的,而第二个帖子发生在第一个帖子完成之前。