URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6210
[ Назад ]

Исходное сообщение
"Как передать данные "

Отправлено rom74 , 17-Фев-09 11:10 
Коллеги, здравствуйте!

Существует форма на странице. В заголовке этой формы ставлю:
<form action="javascript:openWindow('calc.html',500,460);" method="POST">
Т.е. по нажатию клавиши submit будет открыто новое окно. Проблема заключается в том, что в это новое окно не передаются данные, содержащиеся в форме на текущей странице. Пробовал метод GET - тоже ничего не передается. Как туда эти данные передать?

функция openWindow описана так:

<script type="text/javascript" language="JavaScript">
function openWindow(url,x,y) {
  x+=120;
  y+=180;
  newWindow = window.open(url,"newWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width="+x+",height="+y);
}
</script>

Заранее спасибо за ответ!


Содержание

Сообщения в этом обсуждении
"Как передать данные "
Отправлено angra , 17-Фев-09 11:31 
Краткий ликбез
1. Данные формы могут быть обработаны только скриптом на сервере, но не в простом html
2. action подразумевает url скрипта на сервере и именно для него играет роль method, если же вы подменяете action на js, то стандартных действий не происходит и method роли не играет
3. Действие GET можно сымитировать ручной формировкой url для window.open, хотя практической пользы в вашем случае ноль(если конечно сервер не сконфигурирован извращенцем на обрабатку calc.html как скрипта). Действие POST через window.open сымитировать нельзя.

Почитайте таки что-нибудь из серии для чайников по веб-программированию ибо на лицо абсолютное непонимание базовых принципов.


"Как передать данные "
Отправлено rom74 , 17-Фев-09 11:43 
calc.html - это PHP-скрипт. Говоря вашим языком - апач сконфигурирован "извращенцем", т.е. мной.


"Как передать данные "
Отправлено angra , 17-Фев-09 11:58 
Тогда формируйте get запрос вручную. Учтите, что он ограничен размером и не поддерживает upload. Пример:
<script type="text/javascript" language="JavaScript">
function openWindow(url,x,y) {
  param='?name='+document.getElementById('name').value+'&pass='+document.getElementById('name').value;
  x+=120;
  y+=180;
  newWindow = window.open(url+param,"newWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width="+x+",height="+y);
}
</script>
<form action="javascript:openWindow('calc.html',500,460);" method="POST">
<input id="name">
<input id="pass">
</form>

Возможно значения параметров надо подвергать url encoding, но мне лень искать какой функцией это делается и смотреть описание window.open на предмет подобной необходимости(двойная кодировка также вредна как и ее полное отсутствие).


"Как передать данные "
Отправлено rom74 , 17-Фев-09 13:59 
Спасибо! Почти получилось. Только вот что интересно, если элемент формы чекбокс (например <input type="checkbox" id="skidka">), то при вашем подходе в ГЕТ-запрос передается значение on в любом случае и когда галочка поставлена на элементе и когда не поставлена. Может быть можно как-то проверить, взведен ли чекбокс?

"Как передать данные "
Отправлено angra , 17-Фев-09 14:03 
Почитайте какие атрибуты имеют элементы формы и именно их проверяйте, для checkbox это что-то вроде checked вместо value

"Как передать данные "
Отправлено rom74 , 17-Фев-09 14:30 
Ух ты! Получилось! Спасибо!

В форме:

<input type="checkbox" id="skidka">

а в жава-скрипте:

if(document.getElementById('skidka').checked) param = param+'&skidka=on';

Надеюсь, кому-то тоже будет полезно