Перезагрузка страницы сформированной через Ajax (Используется xAjax)

  • Автор темы Автор темы Flaker
  • Дата начала Дата начала

Flaker

Новичок
Использую шаблонизатор Smarty, а так же xAjax.

Проблемма в следующем:
Есть панель управления аккаунтом пользователя, страницы которой переключаются xAjax'ом таким образом:
PHP:
function setUcpPage($pageName) {
	global $smarty;
	$objResponse = new xajaxResponse();
	$output = $smarty->fetch('control_pannel/pages/'.$pageName.'.tpl');
	$objResponse->assign("ucp_page","innerHTML", $output);
	return $objResponse;
}

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

Так вот как сделать обновление страницы сформированной Ajaxом, что бы при этом не выкидывало на главную каждый раз...?
 
history API или якоря
парсить адрес при перезагрузке страницы(или кнопках вперед/назад) и загружать нужный контент
 
парсить адрес при перезагрузке страницы(или кнопках вперед/назад) и загружать нужный контент
Адресс страницы один и тот же всегда, просто контент меняется... В этом и проблема

Absinthe, не мог бы описать поподробнее каждый из способов? (Или дать линк на статью) Я новичек совсем... Первый мой проект делаю вот.
 
Вобщем, пошерстил я гитхаб... Я так понял они меняют url при переходе на след страницу/раздел и тд...

Тоесть я нахожусь сначала тут: ( https://github.com/iwitaly/AStar/tree/master/A*.xcodeproj), а затем, при смене директории, адресс уже такой ( https://github.com/iwitaly/AStar/tree/master/A*.xcodeproj/project.xcworkspace )

Правильно я понял систему? Если нет, то поясните пожалуйста, как всетаки лучше...

И еще вопрос, а как динамически, без перезагрузки самой страницы, менять url....?
 
Разобрался с History API... Решил использовать библиотеку history.js , для кроссбраузерности...

Вобщем я логику History, в общем и целом понял, но пока не могу реализовать нормально смену контента на странице + смену URL без перезагрузки страницы, и чтоб при этом ее можно было обновить...

Проблемма вот в чем:
Я захожу на страницу User Control Pannel (http://ucp/control_pannel.php), далее там жму на ссылку, которая уже активирует смену контента. Но после нажатия на ссыль, адресс становиться вот такой: http://ucp/control_pannel.php/new_order, а если перехожу далее, то вот такой: http://ucp/control_pannel.php/index.php...

Я не пойму, как можно реализовать нормальное перемещение?

Листинг кода обработки нажатия на ссылку, и замены URL'а

(Javascript CODE)
PHP:
$(function () {
    /*  Проверяем, поддерживается ли History.js браузером.
    Если нет, то ничего не делаем, пусть всё работает
    по-старинке. */
    if (!History.enabled) {
        return;
    }

    /*  Инициализируем контейнер для записей */
     var $content_zone = $("#ucp_page");

    /* Вешаем обработчики onlick на ссылки */
    var $page_links = $("div.entry"); 
    $page_links.on( "click", "a", function( e ) {
        e.preventDefault();
        var url = $(this).attr("href");
        /*  Удаляем текущие записи из контейнера */
        //$content_zone.empty();
        /*  Показываем индикатор загрузки */
        //$content_zone.addClass("loading");

        /*  И сообщаем History.js об изменении состояния страницы
        В качестве первого агрумента можно передать произвольный объект
        с дополнительными данными, которые можно извлечь в обработчике
        изменения состояния, описанном ниже.
        В нашем случае это будет пустой объект. */

        History.replaceState({}, null, 'http://ucp/control_pannel.php/'+url);
		xajax_setUcpPage(url);
    });

 
});
 
Тогда у меня вот так будет выглядеть http://ucp/new_order, а такой страницы вобще не существует... Нужно чтоб именно от http://ucp/control_pannel.php адресс двигался дальше, так как именно в этой странице подключен xAjax, а страница index.php у меня вобще чистый htm+php.


Вобщем у меня не весь сайт на Ajax. А только панель управления
 
Сверху