Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Передать $_POST в iframe (https://javascript.ru/forum/events/72807-peredat-%24_post-v-iframe.html)

rafaello 27.02.2018 15:08

Передать $_POST в iframe
 
Здравствуйте!
Что то я в трех соснах заблудился, прошу помощи.
Такая задача. При клике на ссылку открыть новое окно и туда передать $_POST запрос.
Новое окно открыть при помощи http://highslide.com/tutorial#iframe-content
то есть так:
<a href="includes/include.php" onclick="return hs.htmlExpand(this, { objectType: 'iframe', width: 1000 } )">Жмяк_здесь</a>

С этим понятно, проблем не возникает.
Но мне надо передать на страницу некоторые данные с той страницы, где размещена ссылка для открытия нового окна.
Я предполагаю это сделать так:
document.forms[0].action = 'includes/include.php';
document.forms[0].submit();

Как совместить эти два действия? Одновременно открыть новое окно и передать туда $_POST ?
Спасибо!

laimas 27.02.2018 15:09

Форме указать в качестве target iframe,

rafaello 27.02.2018 15:58

Это я понял, что надо сделать так
https://css-tricks.com/snippets/html...-to-an-iframe/

Но мне надо открыть новое окно именно в highslide
http://highslide.com/examples/iframe.html

Я может чего то недопонял, но мне надо открыть ифрейм именно в новом окне highslide ????????

laimas 27.02.2018 16:12

Цитата:

Сообщение от rafaello
Но мне надо открыть новое окно именно в highslide

И какие проблемы, если это плагин, который делает ajax запросы, и в котором в качестве объекта принимающего контент можно использовать и iframe. Отдавайте плагину url запроса, остальное он сделаем сам.

Документация же, чего не прочесть?

rafaello 27.02.2018 17:36

Уважаемый laimas!
Вы не хотите вникнуть в суть моего вопроса. Убедительная просьба к вам понять, что именно я спрашиваю!!
Вот смотрите.
Если следовать примеру http://highslide.com/examples/iframe.html то у нас есть ссылка, при клике на которую открывается некоторая страница "includes/include-short.htm" в новом окне.
<a href="includes/include-short.htm" onclick="return hs.htmlExpand(this, { objectType: 'iframe' } )">Жмяк здесь</a>

У меня же другая задача
На этой же странице, где расположена ссылка есть некая форма и вот данные этой формы надо отправить в новое окно. Чувствуете разницу?
<a href="includes/include-short.htm" onclick="return hs.htmlExpand(this, { objectType: 'iframe' } )">Жмяк здесь</a>
<form action="file.php" target="" method="post">	
  <label for="text">Some text:</label>
  <input type="text" name="text" id="text">	
  <input type="submit" value="post">	
</form>

1. Ссылка "Жмяк здесь" находится снаружи формы и не имеет отношения к событию "submit"
2. action формы и href страницы для открытия в ифрейме совершенно разные.
3. При клике на ссылку не надо отправлять форму по адресу action="file.php", а надо получить данные инпутов "text" и отправить эти данные методом POST по адресу href="includes/include-short.htm" и открыть новое окно

laimas 27.02.2018 17:59

Цитата:

Сообщение от rafaello
При клике на ссылку не надо отправлять форму по адресу action="file.php", а надо получить данные инпутов "text" и отправить эти данные методом POST

Охренеть. Если не надо отправлять форму, а получить только ее поля, получайте и в предварительно открытый фрейм помещайте их. Причем тут POST? Если данные формы нужно отправить серверу для обработки методом POST, а уже ее результат поместить во фрейм, то это ajax.

laimas 27.02.2018 18:42

Цитата:

Сообщение от laimas
а уже ее результат поместить во фрейм, то это ajax.

Либо как ранее говорилось, через target. Но имя фрейма скорее всего формируется случайно, тогда по событию отправки формы, его нужно получить подставив в форму.

onclick="return hs.htmlExpand(this, { objectType: 'iframe' }); form.submit()"

и

form.target = document.querySelector('iframe').name; //но форму отправлять надо по ответу ajax в плагине, то есть, если есть такое событие, иначе фрейм будет недоступен

Вот только ответ сервера затрет содержимое фрейма, а значит серверный сценарий должен обработать поля, подключить "includes/include-short.htm" вставив эти значения куда требуется и вернуть это как ответ, который и будет помещен во фрейм.

Иначе описание "чего хочется" на какой-то бред похоже, ну или описано дремуче и потому выглядит бредом.

rafaello 27.02.2018 18:53

Цитата:

Если не надо отправлять форму, а получить только ее поля, получайте и в предварительно открытый фрейм помещайте их.
а одновременно....?

laimas 27.02.2018 19:04

Цитата:

Сообщение от rafaello
а одновременно....?

А вы как думаете - можно послать серверу два запроса одновременно, и чтобы он два запроса одновременно обработал, и отдал ответы в два разных потока двум разным получателям?

У вас ведь и "хотелка", волосы дыбом. Как можно передать на страницу, которая уже открыта у клиента (include-short.htm), данные формы методом POST?!

rafaello 27.02.2018 19:16

Цитата:

У вас ведь и "хотелка", волосы дыбом. Как можно передать на страницу, которая уже открыт у клиента (include-short.htm), данные формы методом POST?!
А если такой вариант......
Давайте все упростим.
Есть обычная форма
<form action="includes/include-short.htm" target="" method="post">
<input type="text" name="text1" id="text1">			
<input type="text" name="text2" id="text2">		
<input type="submit" value="post">		
</form>

Как сделать так, чтобы при нажатии на input type="submit" страница "includes/include-short.htm" открылась в новом модальном окне (highslide). Или другими словами привязать событие
onclick="return hs.htmlExpand(this, { objectType: 'iframe' } )"
к нажатию на "submit"

Да, вы правильно заметили, что я заранее не знаю имя ифрейма, который формируется автоматом.


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