Перейти к содержимому


Диалоговое окно с кнопками


Сообщений в теме: 10

#1 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 14 Март 2016 - 12:44

Помочь, настроил по нажатию кнопки доп. действия - всплывающее окно с 3 кнопками (Тарифами);
Необходимо чтобы при выборе одного из 3 тарифов, диалоговое окно закрылось, а родительское окно после выполнения скрипта сменило URL

Вот пример как получилось

if (isset($_REQUEST["tarif"]))
  {
		  $tarif = $_REQUEST["tarif"];
		
		  //... тут код скрипта в результате которого получаем переменные для построение URL

echo "<script>";
echo "window.opener.location.reload(1);"; // Перезагружаем родительское окно
echo "window.close()"; // Закрываем текущее
echo "</script>";
echo "<script>location.href='",$config["site_root"],"/view_line.php?table=",$insertTableID,"&line=",$inserted_id,"&back_url=",$base64_current_url,"'</script>";		
}
echo "<p style='text-align:center'>Выберите тариф:<p>";
echo "<form method='get'>";
echo "<div style='margin:0 auto; text-align:center'>";
echo "<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value=$ID>";  // Значение строки
echo "<input type='hidden' name='tarif' value='BASE'>";
echo "<input type='submit' value='БАЗОВЫЙ'>";
echo "</div>";
echo "</form>";
echo "<form method='get'>";
echo "<div style='margin:0 auto; text-align:center'>";
echo "<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value=$ID>";  // Значение строки
echo "<input type='hidden' name='tarif' value='OPTIMA'>";
echo "<input type='submit' value='OPTIMA'>";
echo "</div>";
echo "</form>";
echo "<form method='get'>";
echo "<div style='margin:0 auto; text-align:center'>";
echo "<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value=$ID>";
echo "<input type='hidden' name='tarif' value='VIP'>";   // Значение строки
echo "<input type='submit' value='VIP'>";
echo "</div>";
echo "</form>";

На выходе получаю, что переход на другую странице осуществляется прямо в диалоговом окне... Как исправить казус ? :)

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Март 2016 - 14:34

У вас подсказка прямо в коде расположена, там где перезагрузка родительского окна. Суть в том, что все операции с адресом надо производить с "window.opener" - родительским окном.

Т.е. вместо "window.opener.location.reload" у вас должно быть ""window.opener.location.href=адрес". Только адрес правильно составляйте, никаких запятых там быть не должно (как в вашем примере), для конкатенации строк в PHP используется только точка.

#3 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 14 Март 2016 - 14:45

Так тоже не робит (( может ошибка в синтаксисе..
echo "
<script>
window.opener.location.href='".$config["site_root"]."/view_line.php?table=".$insertTableID."&line=".$inserted_id."&back_url=".$base64_current_url."';
window.close()
</script>
";


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Март 2016 - 14:50

Что конкретно не работает? Вообще не хочет переходить никуда? Визуально ошибок не видно, можно в консоли браузера еще проверить. Может я конечно в логике где-то ошибся, но тогда не знаю.

#5 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 14 Март 2016 - 14:50

Переход по прежнему происходит внутри диалогового окна, а не в родительской окне.

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Март 2016 - 14:53

А вы строку с переходом в диалоговом не забыли удалить? Это там где просто "location.href"

#7 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 14 Март 2016 - 14:54

Нет, не забыл - проверил!

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Март 2016 - 15:01

Тогда не знаю, честно говоря..

#9 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 14 Март 2016 - 15:26

Просмотр сообщенияDinak (14 Март 2016 - 14:54) писал:

Нет, не забыл - проверил!
Просто мысли. При редактировании во внутреннем редакторе КБ при нажатии значка сохранить, данные не всегда уходят на сервер. Неоднократно с этим сталкивался. Аякс перестает работать. Т.е. все изменения остаются только локально в Вашем окне. Нажмите F5, чтобы обновить окно, после чего проверьте код.
Ошибок в скрипте также не наблюдаю.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#10 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 15 Март 2016 - 09:44

Решил проблему, нашёл свою ошибку! спасибо за подсказки!

#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Март 2016 - 15:11

Цитата

Только адрес правильно составляйте, никаких запятых там быть не должно (как в вашем примере), для конкатенации строк в PHP используется только точка

Чисто случайно узнал, что оказывается в случае вывода через echo это вполне легальный вариант (вернее и раньше это знал, но забыл). Так что извиняюсь за ввод в заблуждение.





Количество пользователей, читающих эту тему: 5

0 пользователей, 5 гостей, 0 анонимных