Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.01.2015, 19:47
Аватар для golopogos
Интересующийся
Отправить личное сообщение для golopogos Посмотреть профиль Найти все сообщения от golopogos
 
Регистрация: 19.05.2014
Сообщений: 24

С PHP-сессии в переменную jQuery - открываем модальное окно при значении: присвоено
Добрый день. Подскажите как реализовать логику.

При загрузке страницы получаю из сессии значение и помещаю в переменную с помощью PHP:

// Берём из ссылки ключ после ? и помещаем его в сессию
$_SESSION['rf_sponsor'] = $_SERVER['QUERY_STRING'];

// Присваиваем переменной значение ключа
$rf_sponsor = $_SESSION['rf_sponsor'];


Что нужно?: Когда значение переменной $rf_sponsor равно 0, т.е. не присвоено - ничего не происходит, когда значение не равно 0 - срабатывает обработчик, запускающий модальное окно.

Есть вариант создать скрытый input, отслеживать состояние с помощью jQuery, запуская модальное окно по результату:

Код:
<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 {

        //тут ничего не делаем

    }
})();

Но может можно как нибудь обойтись без скрытого поля и более правильным образом? Помогите найти правильное решение.
Ответить с цитированием
  #2 (permalink)  
Старый 29.01.2015, 20:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

golopogos,
а что на сервере нельзя недобавлять код запуска если ненужен
Ответить с цитированием
  #3 (permalink)  
Старый 29.01.2015, 20:13
Аватар для golopogos
Интересующийся
Отправить личное сообщение для golopogos Посмотреть профиль Найти все сообщения от golopogos
 
Регистрация: 19.05.2014
Сообщений: 24

Извините, но я вас не понял...

Суть в чём, нужно сделать одновременно две вещи: передать ключ и запустить нужное модальное окно

Пользователь получает на почту секретную ссылку с ключом вида http://mydomen/index.php?a7wet1mfr50.
При переходе пользователя по этой ссылке, заканчивающейся ключом, обрабатываем $_SERVER['QUERY_STRING'], отсекается ключ и помещается в сессию $_SESSION['rf_sponsor'] а затем в переменную $rf_sponsor.

Но обработчик, использующий этот ключ находится на другой странице, во фрейме модального окна, которое ещё нужно открыть. Передать переменную на ту страницу запросто - сессия, но ещё нужно запустить модальное окно с этой страницей - что и пытаюсь сделать гармонично.

Переходишь по этой ссылке > автоматом запускается модальное окно > используем переменную уже на другой странице:

@session_start();
$rf_sponsor = $_SESSION['rf_sponsor'];

Последний раз редактировалось golopogos, 29.01.2015 в 20:30.
Ответить с цитированием
  #4 (permalink)  
Старый 29.01.2015, 20:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

golopogos,
с php не помогу
Ответить с цитированием
  #5 (permalink)  
Старый 29.01.2015, 20:41
Аватар для golopogos
Интересующийся
Отправить личное сообщение для golopogos Посмотреть профиль Найти все сообщения от golopogos
 
Регистрация: 19.05.2014
Сообщений: 24

РОНИ,
поправьте пожалуйста хотя бы этот код:


<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 {

        //тут ничего не делаем

    }
})();


Буду тогда использовать скрытое поле. Как выразить конструкцию по короче?..
Ответить с цитированием
  #6 (permalink)  
Старый 29.01.2015, 20:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от golopogos
Как выразить конструкцию по короче?..
(function() {
    var a = $("#someinput");
    a[0].value && a.frameWarp({
        url: "//mydomen.com/login.php",
        width: 1040,
        height: 720
    })
})();
Ответить с цитированием
  #7 (permalink)  
Старый 29.01.2015, 21:08
Аватар для golopogos
Интересующийся
Отправить личное сообщение для golopogos Посмотреть профиль Найти все сообщения от golopogos
 
Регистрация: 19.05.2014
Сообщений: 24

Попробую, спасибо РОНИ!
Ответить с цитированием
  #8 (permalink)  
Старый 30.01.2015, 15:39
Аватар для golopogos
Интересующийся
Отправить личное сообщение для golopogos Посмотреть профиль Найти все сообщения от golopogos
 
Регистрация: 19.05.2014
Сообщений: 24

Добрый день, РОНИ. Немного изменил код, представленный вами, чтоб напрямую получать значение. Но почему то не срабатывает - окно не выводится, хотя переменной присваивается значение ключа. Я проверял.

Может не так инициализирую скрипт 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
	});
});

Последний раз редактировалось golopogos, 30.01.2015 в 16:00.
Ответить с цитированием
  #9 (permalink)  
Старый 30.01.2015, 17:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от golopogos
var a = $('<?=$rf_sponsor;?>');
для меня эта строка какой-то бред , чтобы запустить окно автоматом достаточно
типа такого
$(function(){
 var a = '<?=$rf_sponsor;?>'; //как эта строка на php правильно незнаю или "<?php echo $rf_sponsor; ?>"
a &&	$('<a/>').frameWarp({
		url : '//yagool.ru/',
        width: 500,
        height: 400
	}).click();
});
Ответить с цитированием
  #10 (permalink)  
Старый 31.01.2015, 11:16
Аватар для golopogos
Интересующийся
Отправить личное сообщение для golopogos Посмотреть профиль Найти все сообщения от golopogos
 
Регистрация: 19.05.2014
Сообщений: 24

Спасибо, очень помогли! Всё работает как задумано.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать переменную с jquery в php Максим2 jQuery 14 28.07.2013 11:38
Как открыть модальное окно сразу при загрузке страницы dgabets jQuery 3 13.02.2012 21:03
установить переменную сессии через ajax при загрузке страницы optik77 AJAX и COMET 3 02.06.2011 17:36
выборка идентификатора при помощи jQuery из цикла PHP... xormax jQuery 4 27.04.2011 13:59
Необходимо передать переменную из php в функцию jQuery asp_ AJAX и COMET 4 08.01.2011 13:22