Открытие окна и запись
Доброго времени суток всем и хорошего вам настроения ;)
Вообщем моя задача, вот она: при нажатии на кнопку взять текст со страницы из div id="title" и div id="text" открыть другую страницу сайта в том же окне и добавить к уже имеющимуся контенту html код с текстом из div id="title" и div id="text" <script type="text/javascript"> function show() { /*Здесь открываеться Popup, а нужно в том же окне myWindow=window.open('','','width=200,height=100') /*Здесь с помощью дом ищем id и берем текст потом пишем в попап, а надо текст писать в div="message" myWindow.document.write(document.getElementById('val').value) /*здесь окно popup браузеру делаеться активным, в мойм варианте это /*вообще думаю не нужно :) myWindow.focus(); } </script> <div id="val">1234</div> <button onclick='show()'>OK</button> Помогите сделать(понять) как реализовать. |
Вариантов масса. Смотря что вы хотите сделать.
1. затолкать содержимое блоков в куку. 2. -/- в local storage. 3. передать на следующую страницу как переменную в get или post запросе. 4. отправить на сервер, спрятать содержимое в сессионную переменную, на следующей странице прочитать. 5. отправить на сервер, спрятать содержимое блоков в файл и прочитать его (файла) содержимое на новой странице. Ну это основные методы. Можно придумать и что-то более извращенное. Описывайте, для чего вам понадобилось содержимое блоков на другой странице, что там за содержимое и решим, что вам подходит больше. |
когда пользователь нажмёт на кнопку он переходит на страницу с формой где оставляет ФИО, контактный номер и емаил. Рядом с формой нужно показать содержимое блоков предыдущей странице, для того чтобы пользователь понимал что он заказывает, а главное потом содержимое блоков отправить с данными ФИО, тел, емаил.
На данный момент сделал через get отправляю данные просто подставив их в ссылку title=Cтатика&text=Дом Вот так извлекаю данные: <script type="text/javascript"> var data = location.search.substring(1).split('&'); while(d = data.shift()) { d = d.split('='); s = 'Key: ' + d[0] + ', Value: ' + d[1] + '<br>'; } document.getElementById('name').innerHTML = decodeURI(s); </script> Но почему то за место двух переменных обрабатывается одна, и еще нужно значения из переменных разбить по input(ам) т.е поместить первое значение в input value="Дом" с id="adres" второе в input value="Cтатика" с id="title" |
Цитата:
|
Цитата:
|
Цитата:
|
aleksandr8i,
laimas имеет в виду, что если параметры "некоего предмета" содержатся в БД, то на "следующую страницу" вам достаточно в скрытое поле get-ом передать ID этого предмета из БД, а при отправке письма в РНР скрипте вытянуть все нужные параметры по этому идентификатору и вставить их в тело письма, которое придет к менеджеру. |
nesnayka, вот спасибо :D
|
laimas,
Ну, судя по ответу на этот ваш вопрос: "А что есть заказ и чем он определяется?", - человек не понял, чего от него хотят. ) Вышло что-то из разряда: - Хочу кнопку на странице. - Какую кнопку? - Зеленую и квадратную. - Какой функционал кнопки? - Чтобы страницу открывала. - Какую страницу? - Ту, которую мне нужно открыть. |
Цитата:
|
Цитата:
первое значение в input value="Дом" с id="adres" второе в input value="Cтатика" с id="title" Вот так выглядит ссылка с которой берутся значения site.ru/?title=значеие1&text=значение2 вот так выглядт форма: <form action="/form" method="post" enctype="multipart/form-data" id="order"> <div class="xinput"> <label for="title">Значение2</label> <input kl_virtual_keyboard_secure_input="on" name="adres" id="adres" value="" type="text"> </div> <div class="xinput"> <label for="text2">Значение1</label> <input kl_virtual_keyboard_secure_input="on" name="title" id="title" value="" type="text"> </div> <div class="xinput"> <label for="email">*Email</label> <input kl_virtual_keyboard_secure_input="on" name="email" id="email" value="" type="text"> </div> <div class="xinput"> <label for="imia">Имя</label> <input kl_virtual_keyboard_secure_input="on" name="imia" id="imia" value="" type="text"> </div> <div class="input" style="display:none;"> <input kl_virtual_keyboard_secure_input="on" name="captcha" value="" type="text"> </div> <div class="submit"> <input value="c841a093397c245c1c7c2083f467a176" name="cms_token" type="hidden"> <input value="Отправить" type="submit"> </div> </form> С работы только пришёл... ;) |
Цитата:
Если же отказаться от window.open(), что будет лучше, тем более не нужно будет ни переходов между страницами, ни передачи параметров на сервер, а только запрос доп. данных для формы, которая будет создана на клиенте, ну или отдана уже готовая с последующей вставкой в нее данных объекта. |
Цитата:
Так не катит? |
Цитата:
Меня полностью устаревает то что передаются значения по ссылке, тот скрипт который выше выкладывался делает почти то что мне нужно вот на скрине посмотрите, результат. Все что бы я хотел это что бы этот скрипт обрабатывал не одно значение, а все. А после помешал значение в input value"значение1" | input value"значение2". Просто что бы пользователю попав на страницу с формой не нужно было писать самому эти значения: input value"значение1" | input value"значение2" http://i.imgur.com/WUAo99l.jpg?1 Может я не очень понятно изъясняюсь, прошу прощения если это так. И прощу помочь мне дописать скрипт. |
Цитата:
|
aleksandr8i,
Т.е, значения value1 и value2 у вас уже есть и они передаются в ссылке? Вы просто не знаете как их вытянуть из адресной строки. Так? |
Цитата:
Ну это как посмотреть. Заказчики также считают, что иметь в базе значения типа "2nd", "4nd", "6nd", ... это простота, а иметь нормальный список значений, который к тому же исключает "человеческий фактор", это усложнение. window.open() имеет один существенный недостаток, это окно не обязательно сверху всех, такое поведение можно было сделать только в покойном NN. window.open() лучше уж тогда заменить на iframe, если иного не хотите, и это только кажется, что будет сложно, на самом же деле все упрощается. Мое дело предложить, ваше отказаться, как хотите. |
Цитата:
после сообщения nesnayka я понял что есть варианты гораздо проще и нашёл скрипт который делает то что мне нужно и выложил его сюда во втором сообщении. А пользователя я перенаправляю на другую страницу просто, с помощью ссылки вот такого вида: <a href="/feedback?title=значение1&text=значение2" class="g-btn_l">Заказать</a> Как видите здесь нет не каких popup окон. На данный момент сделал через get отправляю данные просто подставив их в ссылку title=Cтатика&text=Дом Вот так извлекаю значения уже на странице c формой: <script type="text/javascript"> var data = location.search.substring(1).split('&'); while(d = data.shift()) { d = d.split('='); s = 'Key: ' + d[0] + ', Value: ' + d[1] + '<br>'; } document.getElementById('name').innerHTML = decodeURI(s); </script> Но почему то за место двух переменных обрабатывается одна, и еще нужно значения из переменных разбить по input(ам) т.е поместить первое значение в input value="Дом" с id="adres" второе в input value="Cтатика" с id="title" |
enctype="multipart/form-data" - это лишнее, как и лишнее var data = location.search.substring(1).split('&'); и т.д..
Какой язык на вашем сервере? PS. И не name="imia", а name="name" :) |
php
|
Цитата:
в исходном файле это выглядит так <form class="g-form-m g-form-m_main" action="{site_url('feedback')}" method="post"> Цитата:
|
Ну так какие проблемы. Вы передаете на адрес /feedback два GET параметра, title и text. На севере они будут доступны в массиве $_GET:
if($_GET AND $_GET = array_diff(array_map('htmlspecialchars', array_map('trim', $_GET)), array('')) AND count($_GET)==2) { //если этот обработчик принимает только эти два параметра //здесь формируем форму, в которую и вставляем $_GET['title'] и $_GET['text'] //как значения в соответствующие ее поля, и отдаем форму пользователю //то есть выводим страницу } |
Цитата:
Это не имя, среди чинного name="title" imia как жаргон четкого пацанчика ), да и адрес пишется address. |
laimas, спасибо большое ;)
|
aleksandr8i,
Т.к. эти данные никуда не вставляются (SQL-запрос и т.п.), а просто передаются на страницу, то можете еще проще написать: <?php $_GET = array_diff(array_map('htmlspecialchars', array_map('trim', $_GET)), array('')); ?> ... <input value="<?=$_GET['title']; ?>" .../> <input value="<?=$_GET['text']; ?>" .../> .... |
Не за что, так как это упрощенный пример, а в реальности вам нужно ответить гораздо на больше вопросов при приеме данных, нежели тех, что приписаны в условии: достоверность ключей, либо, и что обязательно, их значений. Добавление на карту объектов, это смотря каких, и коли добавили свои, то их не только Яшка должен хранить в своем справочнике, но и вы должны вести учет их, но как, если у вас ничего и не где не храниться. Что же мне мешает вам прислать два значения - "Привед", "Медвед", и ваш администратор или кто-то иной это схвает.
А если есть ошибки, то это уже диалог клиент-сервер, а это уже напрямую касается вопроса "да вы все усложняете". За кажущейся простотой могут скрывать большие проблемы. |
Цитата:
А вы попробуйте так делать, до первой XSS атаки может и попрет, а там дай бог задумаетесь. И запомните обязательное золотое правило - сервер обязан проверять все данные пришедшие извне, хоть там на клиенте вплоть до нижнего белья их проверяли. Проверять нужно все. Безопасность не тот вопрос, в котором "проще значит лучше". К тому же вот такая безобидная вставка < может испортить все |
laimas,
Ну безобидная вставка "<" , '"' и даже "><iframe src=..." ничего не сделает в данном случае, т.к. все из адресной строки вставляется в value input'а. А вообще, да, я в курсе. )) |
А в курсе, значит и базарить нечего об этом.
|
Часовой пояс GMT +3, время: 06:10. |