Knockout - перенаправление на другую страницу после успешной публикации ajax при клике - PullRequest
0 голосов
/ 17 октября 2018

У меня проблема с перенаправлением пользователя на другую страницу после публикации на сервере с помощью ajax-запроса. Я пытался возвратить true, чтобы разрешить действие по умолчанию, но проблема в том, что я не знаюкогда мой ajax-запрос будет завершен, и если он будет успешным или нет из-за его асинхронности, возможно, что браузер перенаправляет пользователя перед сохранением данных.

Обновление № 1 Чтобы быть более понятным, моя проблема с строкой window.location.replace (url GoTo) в полной функции обратного вызова, я никуда не перенаправлен, код работает нормально до этой строки, у меня естьне получил никаких ошибок во время выполнения.Также, если я отлаживаю код, он работает так, как я ожидаю, что он делает это, за исключением инструкции по перенаправлению, которая полностью игнорируется.

Моя функция щелчка выглядит следующим образом:

self.save = function (viewmodel, event) {
        var data = ko.toJSON(self);
        $.ajax({
            type: "POST",
            dataType: "JSON",
            url: "/Titulo/Create/",
            contentType: "application/json",
            data: data,
            beforeSend: function () {
                $("#messageContainer").html('<p><span class="fas fa-spinner fa-pulse"></span> Guardando...</p>');
            },
            success: function (data) {
                if (data.Success) {
                    $("#messageContainer").html('<p><span class="fas fa-spinner fa-pulse"></span>¡Guardado con exito!</p>');
                } else {
                    $("#messageContainer").html('<p><span class="fas fa-spinner fa-pulse"></span>¡Ha ocurrido un problema al procesar esta operación!</p>');
                }
            },
            error: function (request, textStatus, errorThrown) {
                $("#messageContainer").html('<p><span class="fas fa-spinner fa-pulse"></span>¡Ha ocurrido un problema al procesar esta operación!</p>');
            },
            complete: function (request, textStatus) {
                if (textStatus === "success") {
                    var host = window.location.host;
                    var urlToGo = host + "/Titulo/Index/";
                    window.location.replace(urlToGo);
                }
            }
        });
    }

Надеюсь, кто-то может помочья или, по крайней мере, дать мне идею.

...