Full-AJAX приложение

Выкладываем свои наработки
Аватара пользователя
Troy
Сообщения: 235
Зарегистрирован: 2011.02.03, 21:04

Full-AJAX приложение

Сообщение Troy »

Скачиваем библиотеку https://github.com/ckald/jquery-pjax
Подключаем её в лейауте (предварительно подключив jQuery)

Код: Выделить всё

<script src="/js/jquery.pjax.js"></script>
<script>
    $('a[ajax]').pjax('#content')
</script>
В папке protected/components создаем файл AjaxController.php со следующим содержанием:

Код: Выделить всё

<?php

class AjaxController extends СController {

    public $layout = 'column1';
    public $breadcrumbs;
    public $pageTitle;

    public function init() {
        $this->pageTitle = Yii::app()->name;
    }

    public function render($view, $data = null) {
        if (isset($_SERVER['HTTP_X_PJAX'])) {
            echo "<title>{$this->pageTitle}</title>";
            $this->renderPartial($view, $data);
        }
        else
            parent::render($view, $data);
    }

} 
Теперь нам всего лишь нужно наследовать контроллеры от AjaxController:

Код: Выделить всё

class ForumController extends AjaxController { 
И в коде view добавлять ссылкам атрибут ajax:

Код: Выделить всё

<a href="<?php echo $this->createUrl('forum/view', array('id' => $forum->id)); ?>" ajax="true"><?php echo $forum->name; ?></a>
мини пример: dev.onwa.ru (некоторые ссылки, с помошью firebug можно легко отследить)
valkiriy
Сообщения: 58
Зарегистрирован: 2010.05.25, 08:32

Re: Full-AJAX приложение

Сообщение valkiriy »

и еще одна библиотека http://fullajax.ru/, как по мне, то более функциональная...
Аватара пользователя
Troy
Сообщения: 235
Зарегистрирован: 2011.02.03, 21:04

Re: Full-AJAX приложение

Сообщение Troy »

valkiriy писал(а):и еще одна библиотека http://fullajax.ru/, как по мне, то более функциональная...
Эта тоже многое умеет, хэш навигация для старых браузеров, не поддреживающих pushState , история, для работы кнопок "Назад" "вперед" и многое другое, к тому же это jQuery плагин, что для меня намного удобнее.
Аватара пользователя
Troy
Сообщения: 235
Зарегистрирован: 2011.02.03, 21:04

Re: Full-AJAX приложение

Сообщение Troy »

Вот более подробное описание самой библиотеки (она модифицирована) http://habrahabr.ru/blogs/webdev/123972/
Аватара пользователя
Svyatov
Сообщения: 459
Зарегистрирован: 2010.08.12, 14:50
Откуда: Санкт-Петербург
Контактная информация:

Re: Full-AJAX приложение

Сообщение Svyatov »

dev.onwa.ru - аццки лагает.
Аватара пользователя
Troy
Сообщения: 235
Зарегистрирован: 2011.02.03, 21:04

Re: Full-AJAX приложение

Сообщение Troy »

Svyatov писал(а):dev.onwa.ru - аццки лагает.
Это к хостеру уже. Сервер вроде в германии, может из-за этого у вас проблемы. У меня сейчас все хорошо работает.
Аватара пользователя
Kirill
Сообщения: 128
Зарегистрирован: 2010.08.28, 22:34

Re: Full-AJAX приложение

Сообщение Kirill »

Классное решение. jquery-pjax намного лучше, чем fullajax.ru

Но вместо

Код: Выделить всё

echo "<title>{$this->pageTitle}</title>"; 
Лучше использовать

Код: Выделить всё

echo CHtml::tag('title', array(), $this->pageTitle); 
Так код будет чище, и HTML-теги в контроллере не есть гуд ;)

Вместо ajax="true" правильней заюзать html5-атрибут data-ajax, например. Ссылки будут такими:

Код: Выделить всё

<a href="<?php echo $this->createUrl('forum/view', array('id' => $forum->id)); ?>" data-ajax="true"><?php echo $forum->name; ?></a>
JS-код станет таким:

Код: Выделить всё

<script src="/js/jquery.pjax.js"></script>
<script>
    $('a[data-ajax]').pjax('#content')
</script>
github profile: https://github.com/kirs
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Full-AJAX приложение

Сообщение Ekstazi »

У меня есть решение еще лучше чем эти два, но, оно пока не готово к релизу. В свободное время добью. Там и подгрузки скриптов, и нормальные формы и нормальный title. И подключение двумя строчками + полная поддержка html5 для старых браузеров. + поддержка document.write. В общем всего не перечислить. Кому очень надо - могу дать для теста, но, с одним лишь условием - не тырить идеи, и не тырить код. То есть все авторство за мной.
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Full-AJAX приложение

Сообщение nizsheanez »

Кто-нибудь ставил этот плагин?
У меня циклический редирект в IE
SpartakuS
Сообщения: 72
Зарегистрирован: 2010.10.16, 21:36

Re: Full-AJAX приложение

Сообщение SpartakuS »

Нет ни у кого готовых решений, если есть зависимости в layout`ах?
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Full-AJAX приложение

Сообщение nizsheanez »

Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Full-AJAX приложение

Сообщение Ekstazi »

О ) Вариация моей идеи от Sam a... Можете еще на форуме поискать англоязычном и в тикетах. Там была моя версия. Да и саму тему почитайте http://www.yiiframework.com/forum/index ... s-on-ajax/ . Такое решение содержит множество ошибок(ньюансов) и очень костыльное, но, все же на простых задачах подойдет (NlsClientScript содержит кое-какие глюки).
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Full-AJAX приложение

Сообщение samdark »

У меня неоттестированное решение. Писалось для демонстрации концепта и тестирования Yii как раз на идеях Максима. В бою ни разу не использовалось.
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Full-AJAX приложение

Сообщение Ekstazi »

Да у меня пока тоже... Более стабильное и оттестирование все не успеваю до ума довести.
SpartakuS
Сообщения: 72
Зарегистрирован: 2010.10.16, 21:36

Re: Full-AJAX приложение

Сообщение SpartakuS »

Сходу не нашел. Зависимости лейаутов учитываются?
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Full-AJAX приложение

Сообщение Ekstazi »

Пока нет. Расширения то нет моего пока.
PixoiD
Сообщения: 111
Зарегистрирован: 2009.09.25, 10:14

Re: Full-AJAX приложение

Сообщение PixoiD »

Есть вопрос по фуладжакс, если есть реклама то как с этим быть по ajax как то не подгружается, или же тут же счетчик с Li, может кто сталкивался и знает как это можно обойти?
Сила аргументов, аргументы силы!
Аватара пользователя
Troy
Сообщения: 235
Зарегистрирован: 2011.02.03, 21:04

Re: Full-AJAX приложение

Сообщение Troy »

PixoiD писал(а):Есть вопрос по фуладжакс, если есть реклама то как с этим быть по ajax как то не подгружается, или же тут же счетчик с Li, может кто сталкивался и знает как это можно обойти?
Для гугл аналитикс можно было вызывать функцию, якобы новая страница, может и там что-то похожее есть?
PixoiD
Сообщения: 111
Зарегистрирован: 2009.09.25, 10:14

Re: Full-AJAX приложение

Сообщение PixoiD »

Да как бы с этим бы разобраться...
Сила аргументов, аргументы силы!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Full-AJAX приложение

Сообщение Ekstazi »

Я сталкивался, но моё решение пока еще не готово.
Ответить