JQuery перезагрузить страницу без обновления контента - PullRequest
0 голосов
/ 06 июня 2019

Я использую jQuery для отправки формы в скрипт-обработчик с использованием AJAX.По завершении я обновляю страницу - однако содержимое фактически не обновляется, пока я не выполню обновление Shift-F5 на странице.Это, очевидно, плохо, так как пользователь считает, что его отправка не прошла.

Я пытался сделать location.href = location.href.Я пытался сделать location.reload (правда);Я попытался добавить случайные переменные в конец страницы, чтобы заставить его загрузить новую.Я попытался вставить Page_Load моего usercontrol для поиска этих переменных, и, если они существуют, перепривязать данные, которые я пытался сделать, так же, как и выше, за исключением родительской страницы для этого usercontrol.Я попытался отключить привязку страниц для этой страницы.
Я попытался отключить состояние представления для элемента управления (элемент управления Literal, который отображает собранную таблицу HTML и форму на серверной части)

$(".saveButton").click(function () {
            $(".timeEntry").each(function () {
                var dayCount = $(this).attr('data-day');
                var chargecode = $(this).attr('data-chargecodeid');
                var chargetype = $(this).attr('data-chargetypeid');

                $.ajax({
                    type: "GET",
                    url: "_PostTime.aspx",
                    data: {
                        "UserID": "<%: HttpContext.Current.User.Identity.GetUserId() %>",
                        "Hours": $(this).val(),
                        "DayCount": dayCount.replace("Day", ""),
                        "ChargeCodeID": chargecode,
                        "ChargeTypeID": chargetype
                    },
                    datatype: "text",
                    success: function () {
                        //Do nothing
                    }                        
                });                                                                                          
            });

            location.reload();
        });

Выполнение вышеуказанного кода правильно отправляет форму и перезагружает страницу по завершении - однако, независимо от того, что я пытаюсь, страница остается в исходном состоянии, пока пользователь вручную не обновит браузер.

На данный момент я в растерянности от того, что происходит.Я подтвердил, что в моем коде ASP.NET нет ошибок и нет ошибок jQuery в консоли браузера.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Попробуйте переместить перезагрузку в функцию успеха.После перезагрузки произойдет перезагрузка:

$(".saveButton").click(function () {
            $(".timeEntry").each(function () {
                var dayCount = $(this).attr('data-day');
                var chargecode = $(this).attr('data-chargecodeid');
                var chargetype = $(this).attr('data-chargetypeid');

                $.ajax({
                    type: "GET",
                    url: "_PostTime.aspx",
                    data: {
                        "UserID": "<%: HttpContext.Current.User.Identity.GetUserId() %>",
                        "Hours": $(this).val(),
                        "DayCount": dayCount.replace("Day", ""),
                        "ChargeCodeID": chargecode,
                        "ChargeTypeID": chargetype
                    },
                    datatype: "text",
                    success: function () {
                      window.location.reload(); // like this
                    }                        
                });                                                                                          
            });
        });
0 голосов
/ 06 июня 2019

Ajax является асинхронным.это означает, что если вы поместите код после $.ajax(), он не будет запускаться после ajax.

, поэтому вам следует дождаться завершения всех ваших вызовов ajax, а затем обновить страницу.Вы можете использовать .ajaxStop для такой вещи.

//after loop
$( document ).ajaxStop(function() {
  location.reload();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...