Задача: Передача данных из основного во всплывающее-popup окно через POST
Исходник: Передача данных из основного во всплывающее-popup окно используя POST, язык: javascript [code #187, hits: 9689]
автор: this [добавлен: 23.11.2006]
  1. function Form2Popup(params, actionUrl, name, popupConfig, get) {
  2. // free in choice: post or get
  3. var method = (get == undefined || !get) ? 'POST' : 'GET';
  4.  
  5. // it's important to assign non-null name!
  6. if (name == undefined || name == '') {
  7. name = 'tmpPopup';
  8. }
  9. var form = document.createElement('<form action="' + actionUrl + '" method="' + method + '" target="' + name + '" style="display:none;"></form>');
  10. var element = null;
  11. for (var propName in params) {
  12. element = document.createElement('<input type="text" name="' + propName + '" value="' + params[propName] + '">');
  13. form.appendChild(element);
  14. }
  15. document.body.appendChild(form);
  16.  
  17. // First, open empty window: why make redundant request to server?
  18. var win = window.open('about:blank', name, popupConfig);
  19.  
  20. // in order to restore this window
  21. // if it's already been opened before
  22. win.focus();
  23. form.submit();
  24. form.removeNode(true);
  25. return win;
  26. }
  27.  
  28. .......
  29. // Example:
  30. var _name = document.getElementById("nameDiv");
  31. var _text = forms['myform'].messageTextarea.value;
  32. var params = {name:_name,title:"user preview",txt:_text};
  33.  
  34. var previewPopup = Form2Popup(params, 'save.jsp?preview=1', 'preview', 'top=100,left=100,scrollbars=1');
Динамически создается форма с определенным значеним в target, заполняется необходимыми данными, привязывается к документу. Открывается popup окно с именем, равным target формы. Далее форма просто посылается и после этого сразу же удаляется.

params - объект, в свойствах которого определяются пересылаемые значения
actionUrl - action формы, т.е. url который откроется в итоге в popup-е
name - имя окна(важно его задать, не оставлять пустым)
popupConfig - параметры popup окна, то же, что и в window.open
get - если задано значение, используется get метод, иначе и по-умалчанию - post

Обратите внимание, что динамически создаваемая формы никак не отобразится и не исказит страницу, т.к. создается с css свойством display установленным в none;
Тестировалось на: IE 6.0 SP2, Mozilla FF 1.5, Opera 8.5

+добавить реализацию