С 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, время: 02:33. |