Возможно, я ошибаюсь в том, что на самом деле происходит здесь, но у меня есть 3 Html.dropdownlists. И im использует 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, чтобы точно выяснить, что происходит, но мой инстинкт подсказывает мне, что оба сообщения происходят одновременно, а второе сообщение происходит до того, как первый закончен.
Я видел где-то, что вы можете установить асинхронное значение false. Это правда? –
Получил это. Я поставил второй вызов контроллера внутри успеха первого. Благодаря! –
Также обратите внимание - есть плагины jQuery, которые отправляют запросы ajax в очереди. Я лично использовал и пользовался http://www.protofunc.com/scripts/jquery/ajaxManager/ – Jono