Блокировать пользовательский интерфейс при загрузке страницы - PullRequest
0 голосов
/ 02 февраля 2012

Я хочу заблокировать мой пользовательский интерфейс, пока значения в моем раскрывающемся списке не загружены мой код файла js выглядит следующим образом

$(document).ready(function() {
    // Load All Toll Plazas
    FillInCascadeDropdown({ userType: -1 }, "#ddlTollPlazas", "/Home/GetTollPlazas/" + -1);
}

function FillInCascadeDropdown(map, dropdown, action) {
    $(dropdown).empty();
    $.blockUI({ message: '<img src="/Content/images/ajax-loader.gif"/>' });
    $.post(action, map, function(data) {
        $.each(data, function() {
            $(dropdown).append("<option value=" + this.Value + ">" + this.Text + "</option>");
        });
    }, "json");
    $.unblockUI();
}

код выше не работает при загрузке страницы.

1 Ответ

1 голос
/ 02 февраля 2012

Я думаю, что вы проблема в том, что вы разблокируете, как только вы вызываете blockUI. Вы должны переместить вызов разблокировки в функцию обратного вызова «Success». Концепция обратных вызовов немного хитрая. По сути, это код, который запускается после успешной публикации. Я уверен, что вы видели эту страницу, но обратитесь к странице сообщений jQuery , чтобы увидеть, куда вам нужно поместить свой обратный вызов, и здесь , чтобы узнать больше о обратных вызовах, если вам нужно. Удачи!

Вот как это должно выглядеть:

function FillInCascadeDropdown(map, dropdown, action) {
    $(dropdown).empty();
    $.blockUI({ message: '<img src="/Content/images/ajax-loader.gif"/>' });
    $.post(action, map, function(data) {
        $.each(data, function() {
            $(dropdown).append("<option value=" + this.Value + ">" + this.Text + "</option>");
        });

        $.unblockUI();
    }, "json");
...