- Предыдущая
- 1
- 2
- 3
- Следующая
- Показаны 16-30 из 31
Вы можете передать ему только готовую DOM-структуру или очередную ссылку на ajax запрос который её предварительно сформирует…
Начиная со ссылки с хешем
_http://мой_сервер/clubs/16#clubs_ajax_getphotos/data_club/album_id:1058 — >
_http://мой_сервер/clubs/16#album_id:1058… остальные параметры явно лишние…
не) если в переменной встречаются такие символы как { }, то скрипт перестает работать если применяем {literal}Не?
это решение рабочее и гибкое, позволяет его использовать в разных разделах сайта, достаточно вынести логику для ajax запроса в отдельный файл и прописать у ссылки хэш строку, скрипт отрабатывает на ура.А вообще очень перемудрёное решение — упрощайте на сколько возможно…
Начиная со ссылки с хешем
Да и дело то не в этом скрипте

Немного продвинулся в своей проблеме.
Во-первых чтобы вставить smarty переменную в JS
мы используем {/literal}{literal}, где между ними и вставляется переменная, но вот соль оказалась в том, что
если в переменной есть фигурные скобки { }, то похоже ругается уже сам смарти! и они должны быть заключены обратно в {literal}, сейчас думаю как на этапе формирования $html сделать замену и экранирование, но проблема именно в этом.
Ну что вы говорите? Сотни раз применяли, работало. У вас не работает.не) если в переменной встречаются такие символы как { }, то скрипт перестает работать если применяем {literal}

Ну что вы говорите? Сотни раз применяли, работало. У вас не работает. Дело в том, что {literal}{/literal} это для смарти. Смарти обработает, внутри этих тегов не отреагирует на символ переменной $, который, например применяется для jquery. В конце смарти отдаст html код, в котором уже нет этих тегов {}. И только после этого в браузере клиента начнет работать js. Так откуда же у вас встречаются символ {} в js коде. Только оттого, что вы сначала пишете закрывающий тег {/literal}, а затем открывающий {literal}.
проверьте следующий код:
на этапе формирования шаблона в php сформируйте переменную:
$test = "{";
и затем в шаблоне выведите ее в следующем виде:
{if $test}
{literal}
<script>
alert('{/literal}{$test}{literal}');
</script>
{/literal}
{/if}
И вы увидите, что ничего работать у вас не будет
На этапе формирования переменной в php нужно сделать замены { — на {ldelim}, а } — на {rdelim}
Это уже результат моих мучений с выводом

б-р-р-р, что-то мы с вами совсем запутались. Откуда же в переменной $test у вас символ "{"? Ну, в вашем случае, это переменнная $html. Мы же с вами туда записали html код, взятый из буфера. Или вы хотите чтобы js исполнял код smarty?проверьте следующий код:
Со знаком "{" конечно не заработает. И то можно обойти так $test = htmlspecialchars("{");
б-р-р-р, что-то мы с вами совсем запутались. Откуда же в переменной $test у вас символ "{"? Ну, в вашем случае, это переменнная $html. Мы же с вами туда записали html код, взятый из буфера. Или вы хотите чтобы js исполнял код smarty?
Со знаком "{" конечно не заработает. И то можно обойти так $test = htmlspecialchars("{");
Вот и я про тоже)
Дело в том, что эти знаки появляются когда формируется второстепенный шаблон и в нем тоже есть js код, вот на него и начинает ругаться.
Насчет предыдущего поста и примера, беру слова обратно, с altrt'ом все отрабатывает.
Сам запутался, сейчас еще раз все буду перепроверять, чтобы точно уже установить в каких ситуациях рушится выполнение скриптов JS а также smarty
Ладно. Успокойтесь, сходите попейте чаю, отдохните и всё получится ) Главное, вникнуть.
Это точно, наверное сказывается отсутствие кофе с самого утраЛадно. Успокойтесь, сходите попейте чаю, отдохните и всё получится ) Главное, вникнуть.

var html_out = {html}; и в js коде используйте уже её, с литералами или без неважно…
$().html( html_out );
php файл который формирует основной и второстепенный шаблон:
.......... .......... .......... .......... $smarty = $inCore->initSmarty('components', 'com_clubs_view_photo.tpl'); $smarty->assign('club', $club); $smarty->assign('photo', $photo); $smarty->assign('is_admin', $is_admin); $smarty->assign('is_moder', $is_moder); $smarty->assign('is_author', $is_author); $smarty->display('com_clubs_view_photo.tpl'); [b]Если нам необходимо переменную, которой присвоили буфер, добавлять в JS скрипт, то обязательно нужно зачистить эту переменную следующим образом:[/b] $replace = " "; ............ [i]далее в продолжаем формировать основной шаблон[/i] ............ ............
{if $photo} <script> var html_out = "{$html}"; {literal} $(function(){ ........... ........... $('#popup_content').html(html_out); $('#popup').fadeIn('slow'); ........... ........... }); {/literal} </script> {/if}
В моем случаи это скрипт:
который отвечает за комментарии фотографии.
тогда вот этого:
$replace = " ";
Действительно, спасибо! Единственное нужно не удалять слэши, а наоборот добавить их, так как вставляем в JSв шаблоне com_clubs_view_photo.tpl пропишите в начале {strip}… и в хвосте {/strip}

Осталось подправить мелкие баги и натянуть дизайн, результат следующий:
Открываем сообщество:
Далее выбираем альбом, где без перезагрузки загружаются фото в правую колонку:
И затем при выборе фото, также ajax'ом грузится шаблон ее отображения в всплывающем окне:
Все работает достаточно быстро, но нужно еще доработать код. Получилось по логике также, как реализовано в VK и FB
Если кому будет интересна реализация, могу помочь

- Предыдущая
- 1
- 2
- 3
- Следующая
- Показаны 16-30 из 31