AJAX — перезагрузите часть веб-страницы без использования отдельного файла для загрузки.

StackOverflow https://stackoverflow.com/questions/407287

Вопрос

Название может немного сбить с толку, поэтому позвольте мне объяснить.

У меня есть веб-сайт с боковой панелью, содержащей информацию о пользователе, о том, что он может делать и т. д.Когда пользователь не авторизован, эта боковая панель становится областью для входа или регистрации.

Код для этого:

<?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-код для всей пользовательской панели.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top