С PHP-сессии в переменную jQuery - открываем модальное окно при значении: присвоено
Добрый день. Подскажите как реализовать логику.
При загрузке страницы получаю из сессии значение и помещаю в переменную с помощью PHP: // Берём из ссылки ключ после ? и помещаем его в сессию $_SESSION['rf_sponsor'] = $_SERVER['QUERY_STRING']; // Присваиваем переменной значение ключа $rf_sponsor = $_SESSION['rf_sponsor']; Что нужно?: Когда значение переменной $rf_sponsor равно 0, т.е. не присвоено - ничего не происходит, когда значение не равно 0 - срабатывает обработчик, запускающий модальное окно. Есть вариант создать скрытый input, отслеживать состояние с помощью jQuery, запуская модальное окно по результату: Код:
Но может можно как нибудь обойтись без скрытого поля и более правильным образом? Помогите найти правильное решение. |
golopogos,
а что на сервере нельзя недобавлять код запуска если ненужен |
Извините, но я вас не понял...
Суть в чём, нужно сделать одновременно две вещи: передать ключ и запустить нужное модальное окно Пользователь получает на почту секретную ссылку с ключом вида http://mydomen/index.php?a7wet1mfr50. При переходе пользователя по этой ссылке, заканчивающейся ключом, обрабатываем $_SERVER['QUERY_STRING'], отсекается ключ и помещается в сессию $_SESSION['rf_sponsor'] а затем в переменную $rf_sponsor. Но обработчик, использующий этот ключ находится на другой странице, во фрейме модального окна, которое ещё нужно открыть. Передать переменную на ту страницу запросто - сессия, но ещё нужно запустить модальное окно с этой страницей - что и пытаюсь сделать гармонично. Переходишь по этой ссылке > автоматом запускается модальное окно > используем переменную уже на другой странице: @session_start(); $rf_sponsor = $_SESSION['rf_sponsor']; |
golopogos,
с php не помогу |
РОНИ,
поправьте пожалуйста хотя бы этот код: <input type="hidden" id="someinput" value="<?php echo $rf_sponsor; ?>" /> (function () { var element = document.getElementById('someinput'); if (element.value === '') { //тут запускаем модал $('#someinput').frameWarp({ url : '//mydomen.com/login.php', width:1040, height:720 }); } else { //тут ничего не делаем } })(); Буду тогда использовать скрытое поле. Как выразить конструкцию по короче?.. |
Цитата:
(function() { var a = $("#someinput"); a[0].value && a.frameWarp({ url: "//mydomen.com/login.php", width: 1040, height: 720 }) })(); |
Попробую, спасибо РОНИ!
|
Добрый день, РОНИ. Немного изменил код, представленный вами, чтоб напрямую получать значение. Но почему то не срабатывает - окно не выводится, хотя переменной присваивается значение ключа. Я проверял.
Может не так инициализирую скрипт frameWarp? Проверьте пожалуйста, я специально создал макет на jsfiddle.net Там кликом запускается модал, но как же связать его с конструкцией ниже?.. //// немного изменил код, представленный вами, чтоб получать значение ключа напрямую // Ключ получаю, но модальное окно не выводится... (function() { var a = $('<?=$rf_sponsor;?>'); // ключ в переменную передается успешно, я проверял... a[0].value && a.frameWarp({ url: '//yagool.ru/', width: 1040, height: 720 }) })(); В стандартном случае frameWarp генерирует модал при клике на ссылку вида: <!-- Ссылка открывает модальное окно --> <a href="#" id="modal">Запуск</a> а инициализируется так: //// Так нужно инициализировать скрипт frameWarp $(function(){ // Кнопка 1 $('#modal').frameWarp({ url : '//yagool.ru/', width: 500, height: 400 }); }); |
Цитата:
типа такого $(function(){ var a = '<?=$rf_sponsor;?>'; //как эта строка на php правильно незнаю или "<?php echo $rf_sponsor; ?>" a && $('<a/>').frameWarp({ url : '//yagool.ru/', width: 500, height: 400 }).click(); }); |
Спасибо, очень помогли! Всё работает как задумано.
|
Часовой пояс GMT +3, время: 23:17. |