0
我可能錯在這裏實際發生的事情,但我有3個Html.dropdownlists。即時通訊使用jquery來處理實際上工作的過濾。但是,我認爲可能會有一些奇怪的行爲,因爲在下一個函數被調用之前數據並未完成加載。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完全不瞭解確切的發生了什麼,但我的直覺告訴我這兩個帖子同時發生,第二個帖子發生在第一個帖子完成之前。
我看到你可以設置async爲false的地方。真的嗎? – 2010-10-25 20:25:03
明白了。我把第二個控制器調用放在第一個控制器的成功之內。謝謝! – 2010-10-25 20:31:06
另請注意 - 有一些jQuery插件會按順序排列要接收的Ajax請求。我親自使用並享受http://www.protofunc.com/scripts/jquery/ajaxManager/ – Jono 2010-10-25 20:36:31