AJAX — перезагрузите часть веб-страницы без использования отдельного файла для загрузки.
-
03-07-2019 - |
Вопрос
Название может немного сбить с толку, поэтому позвольте мне объяснить.
У меня есть веб-сайт с боковой панелью, содержащей информацию о пользователе, о том, что он может делать и т. д.Когда пользователь не авторизован, эта боковая панель становится областью для входа или регистрации.
Код для этого:
<?php
if($user->loggedIn)
{
?>
<!-- side-panel for logged in users here -->
<?php
}
else
{
?>
<!-- login/registration etc -->
<?php
}
?>
Что я хочу сделать, так это снова загрузить этот фрагмент кода, когда пользователь нажимает кнопку входа в систему с помощью AJAX, и использовать эффект jQuery (вероятно, исчезающий), который плавно обеспечивает переход боковой панели от входа/регистрации к блестящей панели только для пользователей.
Я знаю, что мог бы сделать это, если бы поместил этот код в другой файл и загрузил его через AJAX в div боковой панели...но я бы предпочел не делать отдельный файл только для боковой панели.Это возможно?
Решение
Вы можете загрузить страницу с помощью запроса AJAX, а затем удалить данные, кроме боковой панели, но какой в этом смысл?Лучшим вариантом будет просто выделить боковую панель в отдельный файл.
Да, и это также будет считаться правильным способом сделать это, так что вы можете редактировать боковую панель, не редактируя страницы, на которых она находится.
Другие советы
Если я правильно понимаю, что вам нужно, вы можете попробовать так:
$.ajax({
type: "GET",
url: "url", // replace 'url' with your url
cache: false,
success: function(data){
alert($(data).find('#sidebar').html());
}
});
Возможно, будет работать с $.load() или $.get(), не знаю.
Почему вы против хранения боковой панели в отдельном файле?Делает вещи более модульными и организованными.
Если вы действительно против хранения содержимого в файле, вы можете поместить его в базу данных и запрашивать его при каждом вызове AJAX.
Не могли бы вы передать на страницу параметр строки запроса, а затем на основе этого выполнить только частичную визуализацию (только боковая панель) страницы?Затем просто используйте свой обычный метод jquery/ajax и включите параметр строки запроса.
$.ajax(function(){
url: MyPage.php?sidebar_only=true
ect...
})
Предполагая, что вы будете получать фактические пользовательские данные посредством другого вызова, вы можете использовать два элемента div.Элемент div, содержащий HTML-код пользовательской панели, становится скрытым.Когда вы получите успешный вход в систему, скройте div входа в систему и покажите div панели пользователя.Используя данные входа AJAX, заполните пользовательскую информацию панели.Я предполагаю, что вызов входа в систему AJAX вернет необходимую информацию для заполнения имени пользователя и того, что он может сделать.Это просто избавляет вас от необходимости извлекать HTML-код для всей пользовательской панели.