Ошибка захвата и отображения в диалоге JqueryUI - PullRequest
0 голосов
/ 18 мая 2018

Я использую диалоговое окно JQuery-UI для загрузки частичного представления MVC

Вот пример кода:

$(function () {

function fSetupDialogs() {

    $("#dialog-popup").dialog({
      autoOpen: false,
      resizable: true,
      modal: true
    });
}
});



$('body').on('click', '.popup-Edit',
    function (e) {

        url = $(this).data("url");

        $("#dialog-popup")
            .load(url)
            .html("<img src='/content/images/Spinner.gif'>")
            .dialog("option", "title", "Edit " + url.split("/").pop())
            .dialog('open');

    }
);

Это работает довольно хорошо, несмотря на некоторые странные полосы прокрутки и прочее.

Проблема в том, что когда представление выдает ошибку, я не могу понять, как ее проверить и отобразить на панели jqueryui

Поэтому, если представление возвращает ошибку 500 или 401, яЯ хотел бы запечатлеть это и показать в диалоге.Сейчас происходит то, что вращающийся GIF просто сидит там навсегда.Если я открою консоль F12, я увижу там ошибку.

Я попытался использовать обработчик событий .error, который перехватывает ее и открывает окно сообщения.Но я хочу отобразить во всплывающем окне:

        // This pops up an error alert
        $("#dialog-popup")
            .load(url)
            .error(alert("error"))
            .html("<img src='/content/images/Spinner.gif'>")
            .dialog("option", "title", "Edit " + url.split("/").pop())
            .dialog('open');

Как мне отобразить что-то внутри диалога?Это не имеет никакого эффекта - счетчик остается там

        // This has no effect - I want to see the words "error" 
        $("#dialog-popup")
            .load(url)
            .error($("#dialog-popup").html("error"))
            .html("<img src='/content/images/Spinner.gif'>")
            .dialog("option", "title", "Edit " + url.split("/").pop())
            .dialog('open');

Для бонусных баллов, как я могу использовать объект ошибки javascript, чтобы идентифицировать 401, 500 что угодно?- Я еще не дошел до этого.

1 Ответ

0 голосов
/ 18 мая 2018

Я просмотрел свой собственный код и нашел ответ.

Метод load принимает аргумент обратного вызова, который можно использовать для выполнения моих задач

Я написал функцию с именем popupComplete, который вызывается по окончании загрузки.

// This loads a partial MVC view into the popup
$("#dialog-popup")
    .load(url,popupComplete)
    .html("<div align='middle'><img src='/content/images/Spinner.gif'></div>")
    .dialog("option", "title", "New")
    .dialog("open");

// when the load is complete, this is called
// which optionally displays an error inside the popup
function popupComplete(response, status, xhr) {
    if (status === "error") {
        var msg =
            "<BR><BR><BR><H3 style='text-align: center;'><span style='color: red;' class='glyphicon glyphicon-fire'></span>   Confound it!<BR><BR>" +
            xhr.status + " " + xhr.statusText + 
            "<BR><BR>" + (xhr.status == 401 ? "Try logging in again" : "") +
            "</B></H3>";
        $("#dialog-popup").html(msg);
    }
}
...