Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Открытие окна и запись (https://javascript.ru/forum/misc/58304-otkrytie-okna-i-zapis.html)

aleksandr8i 16.09.2015 00:35

Цитата:

Сообщение от nesnayka (Сообщение 388690)
aleksandr8i,
laimas имеет в виду, что если параметры "некоего предмета" содержатся в БД, то на "следующую страницу" вам достаточно в скрытое поле get-ом передать ID этого предмета из БД, а при отправке письма в РНР скрипте вытянуть все нужные параметры по этому идентификатору и вставить их в тело письма, которое придет к менеджеру.

параметры в бд не хранятся. Есть страница в которую интегрирована яндекс карта с мощью апи. Думаю многие знакомы с возможностью размещения на яндекс карте своих объектов, при нажатии на этот самый объект всплывает balloon с содержимым. Вот содержимое balloon мне нужно передать с помощью get на другую страницу сайта, где есть форма, поместить содержимое balloon,
первое значение в 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>


С работы только пришёл... ;)

laimas 16.09.2015 00:56

Цитата:

Сообщение от aleksandr8i
Вот так выглядит ссылка с которой берутся значения site.ru/?title=значеие1&text=значение2

Чтобы их взять они там должны быть. То есть, либо вы эти параметры передаете на сервер, храните их в сессии под ключами, которые сами определяете, и можно будет в любое время их получить. Либо никуда их не передавать, а запомнить в куках на клиенте (localStorage - можно, но если что-то не так, ваш мусор может остаться на клиенте, что не есть хорошо). Либо передаете на сервер, не сохраняя на нем, а возвращая назад, так как после запроса вы же сразу открываете форму.
Если же отказаться от window.open(), что будет лучше, тем более не нужно будет ни переходов между страницами, ни передачи параметров на сервер, а только запрос доп. данных для формы, которая будет создана на клиенте, ну или отдана уже готовая с последующей вставкой в нее данных объекта.

nesnayka 16.09.2015 01:33

Цитата:

Сообщение от aleksandr8i
Есть страница в которую интегрирована яндекс карта с мощью апи. Думаю многие знакомы с возможностью размещения на яндекс карте своих объектов, при нажатии на этот самый объект всплывает balloon с содержимым. Вот содержимое balloon мне нужно передать с помощью get на другую страницу сайта, где есть форма

А может проще открыть эту форму не на новой странице, а в pop-up'е на той же? Потом отправить ее аяксом и уведомить пользователя о том что все ок или все пропало.
Так не катит?

aleksandr8i 16.09.2015 10:40

Цитата:

Сообщение от laimas (Сообщение 388788)
Чтобы их взять они там должны быть. То есть, либо вы эти параметры передаете на сервер, храните их в сессии под ключами, которые сами определяете, и можно будет в любое время их получить. Либо никуда их не передавать, а запомнить в куках на клиенте (localStorage - можно, но если что-то не так, ваш мусор может остаться на клиенте, что не есть хорошо). Либо передаете на сервер, не сохраняя на нем, а возвращая назад, так как после запроса вы же сразу открываете форму.
Если же отказаться от window.open(), что будет лучше, тем более не нужно будет ни переходов между страницами, ни передачи параметров на сервер, а только запрос доп. данных для формы, которая будет создана на клиенте, ну или отдана уже готовая с последующей вставкой в нее данных объекта.

Может я вас до конца не понимаю, но мне кажется вы усложняете для меня задачу, думаю это связано с тем что вы давно программируете а я так любитель... :) ну да ладно.

Меня полностью устаревает то что передаются значения по ссылке, тот скрипт который выше выкладывался делает почти то что мне нужно вот на скрине посмотрите, результат. Все что бы я хотел это что бы этот скрипт обрабатывал не одно значение, а все. А после помешал значение в input value"значение1" | input value"значение2". Просто что бы пользователю попав на страницу с формой не нужно было писать самому эти значения: input value"значение1" | input value"значение2"
http://i.imgur.com/WUAo99l.jpg?1

Может я не очень понятно изъясняюсь, прошу прощения если это так. И прощу помочь мне дописать скрипт.

aleksandr8i 16.09.2015 10:47

Цитата:

Сообщение от nesnayka (Сообщение 388789)
А может проще открыть эту форму не на новой странице, а в pop-up'е на той же? Потом отправить ее аяксом и уведомить пользователя о том что все ок или все пропало.
Так не катит?

Нет, проще перенаправлять пользователя на новую страницу.

nesnayka 16.09.2015 12:00

aleksandr8i,
Т.е, значения value1 и value2 у вас уже есть и они передаются в ссылке? Вы просто не знаете как их вытянуть из адресной строки. Так?

laimas 16.09.2015 12:22

Цитата:

Сообщение от aleksandr8i
Может я вас до конца не понимаю, но мне кажется вы усложняете для меня задачу


Ну это как посмотреть. Заказчики также считают, что иметь в базе значения типа "2nd", "4nd", "6nd", ... это простота, а иметь нормальный список значений, который к тому же исключает "человеческий фактор", это усложнение.

window.open() имеет один существенный недостаток, это окно не обязательно сверху всех, такое поведение можно было сделать только в покойном NN. window.open() лучше уж тогда заменить на iframe, если иного не хотите, и это только кажется, что будет сложно, на самом же деле все упрощается.

Мое дело предложить, ваше отказаться, как хотите.

aleksandr8i 16.09.2015 12:40

Цитата:

Сообщение от laimas (Сообщение 388826)
Ну это как посмотреть. Заказчики также считают, что иметь в базе значения типа "2nd", "4nd", "6nd", ... это простота, а иметь нормальный список значений, который к тому же исключает "человеческий фактор", это усложнение.

window.open() имеет один существенный недостаток, это окно не обязательно сверху всех, такое поведение можно было сделать только в покойном NN. window.open() лучше уж тогда заменить на iframe, если иного не хотите, и это только кажется, что будет сложно, на самом же деле все упрощается.

Мое дело предложить, ваше отказаться, как хотите.

Не придал я почему-то значение, тому что вы в предыдущих сообщениях писали про window.open() - забудьте про эту функцию ;) Я извиняюсь что я сразу вам этого не сказал :) Вообще забудьте про первое сообщение(первый скрипт) :) Извиняюсь и еще раз извиняюсь...

после сообщения 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"

laimas 16.09.2015 12:51

enctype="multipart/form-data" - это лишнее, как и лишнее var data = location.search.substring(1).split('&'); и т.д..

Какой язык на вашем сервере?

PS. И не name="imia", а name="name" :)

aleksandr8i 16.09.2015 12:53

php


Часовой пояс GMT +3, время: 21:12.