Лучшая практика для хранения / повторного использования ответов Ajax

#javascript #jquery #ajax #spring-boot #jsp

#javascript #jquery #ajax #весенняя загрузка #jsp

Вопрос:

Я разрабатываю приложение spring boot, где на определенных страницах у меня есть триггеры onclick, которые используют AJAX для отправки запросов на получение данных из моей базы данных. Например, когда пользователь нажимает на группу в главном меню, AJAX сделает запрос на получение этой группы и динамически отобразит ее на странице JSP следующим образом.

 $(document).ready(function () {
    $(document).on("click", ".group", function () {
        var groupName = $(this).text();
        $(".groups").hide();
        $.ajax({
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            type: "GET",
            url: "/viewGroup",
            data: {"groupName": groupName},
            success: function(result){
                var members = result["groupMembers"];
                $(".focusContainer").append('<div class="groupView">'  
                    '<p>' result["groupName"] '</p>'  
                    '</div>');
                $.each(members, function(index, value){
                    $(".groupView").append('<p>Group Members</p>' 
                        '<p>' members[index]["username"] '</p>');
                });
                $(".groupView").append('<button class="button addButton" id="addFocus" type="button" onclick="addFocus()">Add A Focus</button>' 
                    '<div class="break"></div>' 
                    '<button class="button cancelGroup" id="deleteGroup" type="button" onclick="cancelGroup()">Delete Group</button>');
            }
        })
    });
});
  

Генерируются дополнительные кнопки (addFocus), которые могут, например, добавлять участников или целевые цели в указанную группу, однако они должны быть извлечены из базы данных, поскольку в них могут быть добавлены только участники или цели, связанные с этими группами.

Какова наилучшая практика для извлечения этих данных после первоначального выбора группы (после первого запроса AJAX, извлекающего данные группы)? Должны ли участники / цели группы добавляться в какой-либо скрытый div и отображаться при нажатии соответствующих кнопок? Должен ли я отправлять другой AJAX-запрос при нажатии кнопки добавить фокус / участника? Или ответ на первоначальный запрос должен храниться в глобальной переменной и использоваться другими триггерами .onclick? Я не уверен, с какими проблемами можно столкнуться при сохранении ответа глобально в моем файле .js.

В настоящее время я выполняю новый запрос для каждого клика, но я полагаю, что в процессе производства это стало бы очень обременительным для сервера и привело бы к снижению скорости. Я также видел много упоминаний о создании asynch: false однако, похоже, ведется много споров о том, является ли это хорошим выбором дизайна или нет. Любые рекомендации были бы оценены.

Комментарии:

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

2. Пользователь будет выбирать только одну группу за раз, т. Е. они будут выбирать ту, которая позволит им удалить / изменить ее, а затем возвращать их обратно на страницу групп после того, как они это сделают