Я отправил два запроса в ActionResult? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть проект ASP.net MVC, и в зависимости от параметров фильтра, выбранных пользователем, я отправляю разные запросы ajax для одного и того же результата действия, например:

 $(document).on("click", "#filter_reset_button", function () {
    var url = "/Admin/Index";

    ajaxRequest({
        url: url,
        type: "get",
        data: { reset: true },
        successCallback: function () {
            window.location.href = url;
        }
    });
});

Другие слушатели отправили разные данные,что-то вроде:

 data: { page: 2, filterUpdate: true }

и так далее.Индекс ActionResult возвращает разные списки элементов в зависимости от разных опций, выбранных в данных, и код работает совершенно нормально.

Мой коллега сказал мне, что мой код фактически отправляет два запроса get в AR каждый раз, поэтому он неэффективен.Это правда?И если это так, как я могу сделать рефакторинг?сделать это только один запрос?Если я разрешаю window.location.href = url part, сайт фактически не загружает ответ сервера.

Ответы [ 3 ]

0 голосов
/ 05 апреля 2019

Да, вы делаете 2 запроса в нажатие кнопки.Первый в Ajax Get, второй в успешном перезвоните.

Но почему вы звоните window.location.href = url; success перезвоните.?

Если вы хотите обновить страницу после клика, вы можете сделать частичное обновление страницы.Проверьте этот пост.

0 голосов
/ 05 апреля 2019

Вы можете увидеть пост здесь на этом посту

На самом деле при успешном обратном вызове вы должны изменить свой код в соответствии с приведенным выше сообщением

0 голосов
/ 05 апреля 2019

Это правильный 2 вызванный запрос.

Первый запрос при вызове AJAX get в Индекс действия в Admin Controller.

Второй запрос при установке window.location.href = url, он будет таким же, каквы вводите /Admin/Index в браузере.

В этом случае вам нужно только window.location.href = '/admin/index?reset=true' в функции щелчка

...