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

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ом, что бы при этом не выкидывало на главную каждый раз...?
 

Absinthe

жожо
history API или якоря
парсить адрес при перезагрузке страницы(или кнопках вперед/назад) и загружать нужный контент
 

Flaker

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

Absinthe, не мог бы описать поподробнее каждый из способов? (Или дать линк на статью) Я новичек совсем... Первый мой проект делаю вот.
 

Flaker

Новичок
Вобщем, пошерстил я гитхаб... Я так понял они меняют url при переходе на след страницу/раздел и тд...

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

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

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

Flaker

Новичок
Разобрался с 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);
    });

 
});
 

Flaker

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


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

Flaker

Новичок
Проблемма была в том, что такого адресса: http://ucp/control_pannel.php/new_order не существует...

Я вобщем разобрался) Немного по другому адресс сформировал)

Спасибо Absinthe за помощь)
 
Сверху