27.02.2018, 15:08
|
Кандидат Javascript-наук
|
|
Регистрация: 09.11.2012
Сообщений: 103
|
|
Передать $_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 ?
Спасибо!
|
|
27.02.2018, 15:09
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Форме указать в качестве target iframe,
|
|
27.02.2018, 16:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от rafaello
|
Но мне надо открыть новое окно именно в highslide
|
И какие проблемы, если это плагин, который делает ajax запросы, и в котором в качестве объекта принимающего контент можно использовать и iframe. Отдавайте плагину url запроса, остальное он сделаем сам.
Документация же, чего не прочесть?
|
|
27.02.2018, 17:36
|
Кандидат Javascript-наук
|
|
Регистрация: 09.11.2012
Сообщений: 103
|
|
Уважаемый 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" и открыть новое окно
|
|
27.02.2018, 17:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от rafaello
|
При клике на ссылку не надо отправлять форму по адресу action="file.php", а надо получить данные инпутов "text" и отправить эти данные методом POST
|
Охренеть. Если не надо отправлять форму, а получить только ее поля, получайте и в предварительно открытый фрейм помещайте их. Причем тут POST? Если данные формы нужно отправить серверу для обработки методом POST, а уже ее результат поместить во фрейм, то это ajax.
|
|
27.02.2018, 18:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от laimas
|
а уже ее результат поместить во фрейм, то это ajax.
|
Либо как ранее говорилось, через target. Но имя фрейма скорее всего формируется случайно, тогда по событию отправки формы, его нужно получить подставив в форму.
onclick="return hs.htmlExpand(this, { objectType: 'iframe' }); form.submit()"
и
form.target = document.querySelector('iframe').name; //но форму отправлять надо по ответу ajax в плагине, то есть, если есть такое событие, иначе фрейм будет недоступен
Вот только ответ сервера затрет содержимое фрейма, а значит серверный сценарий должен обработать поля, подключить "includes/include-short.htm" вставив эти значения куда требуется и вернуть это как ответ, который и будет помещен во фрейм.
Иначе описание "чего хочется" на какой-то бред похоже, ну или описано дремуче и потому выглядит бредом.
Последний раз редактировалось laimas, 27.02.2018 в 18:44.
|
|
27.02.2018, 18:53
|
Кандидат Javascript-наук
|
|
Регистрация: 09.11.2012
Сообщений: 103
|
|
Цитата:
|
Если не надо отправлять форму, а получить только ее поля, получайте и в предварительно открытый фрейм помещайте их.
|
а одновременно....?
|
|
27.02.2018, 19:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от rafaello
|
а одновременно....?
|
А вы как думаете - можно послать серверу два запроса одновременно, и чтобы он два запроса одновременно обработал, и отдал ответы в два разных потока двум разным получателям?
У вас ведь и "хотелка", волосы дыбом. Как можно передать на страницу, которая уже открыта у клиента (include-short.htm), данные формы методом POST?!
Последний раз редактировалось laimas, 27.02.2018 в 19:36.
|
|
27.02.2018, 19:16
|
Кандидат Javascript-наук
|
|
Регистрация: 09.11.2012
Сообщений: 103
|
|
Цитата:
|
У вас ведь и "хотелка", волосы дыбом. Как можно передать на страницу, которая уже открыт у клиента (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"
Да, вы правильно заметили, что я заранее не знаю имя ифрейма, который формируется автоматом.
|
|
|
|