Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekazanie danych metoda POST do okna pop-up
Forum PHP.pl > Forum > PHP
grzechu
Czesc mam formularz z taka akcja:
  1. <?php
  2. <form action="java script:PopUp('adres.php');" method="post">
  3. <input type="hidden" value="123" />
  4. ...
  5. </form>
  6. ?>


i tablica POST jest pusta na stronie adres.php, jesli wywale te funkcje popup'owa wszystko gra.

Na innym forum jedna osoba napisala, ze jej dziala, praktycznie tak samo zapisane tylko z wlasna funkcja popup.

Siedze juz nad tym kilka dni i nie czaje dlaczego dane sie nie przekazuja.

Pozdrawiam!
prond
Pogooglałem trochę i znalazłem kod, który działa (sprawdziłem):
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  5. <title>Axent Submit Form To PopUp Demo</title>
  6. <script type="text/javascript">
  7. function openTarget (form, features, windowName) {
  8. if (!windowName)
  9. windowName = 'formTarget' + (new Date().getTime());
  10. form.target = windowName;
  11. open ('', windowName, features);
  12. }
  13. </script>
  14. </head>
  15. <body>
  16. <form action="print_r.php" target="windowName" onsubmit="openTarget(this, 'width=300,height=300,resizable=1,scrollbars=1'); return true;" method="post">
  17. <input type="text" name="string" />
  18. <input type="submit" value="GO" />
  19. </form>
  20. </body>
  21. </html>
grzechu
a nie da sie tego zrobic jakos inaczej, bo nie dziala to na wszystkich przegladarkach tak jak bym chcial

swoja droga dlaczego sie nie przesyla w tradycyjny sposob jak miiedzy stronami otwieranymi bez popupa
phpion
Pozwalam sobie odświeżyć temat. Coprawda bardziej pasowałby dział JavaScript no ale skoro taki temat już istnieje to się pod niego podpinam.

W czym problem? Na stronie mam 2 edytory FCKEditor, które służą do tworzenia nagłówka oraz stopki maila. Chciałbym zrobić podlgąd gotowego maila czyli otworzyć popup i w nim wyświetlić zawartość obu pól (najpier nagłowek, poniżej stopka). Mam problem jak przesłać dane z edytorów (samo pobranie danych nie stanowi problemu). Metoda GET odpada z racji ograniczenia co do ilości przesyłanych danych. Jedyne rozwiązanie jakie mi się nasuwa to wysłanie danych poprzez AJAX metodą POST, zapis ich do jakiegoś tymczasowego pliku (a'la cache), po czym onComplete otworzenie popupa, który wczytałby ten plik. Czy istnieje inne (lepsze) rozwiązanie tego problemu?

Pozdrawiam,
pion
johnson
Na końcu formularza robisz dwa przyciski "button". W zależności, na którego użytkownik kliknie ustawiane są odpowiednie parametry formularza "action" - plik, który odbiera dane z formularza, "target" - okno, do którego przesyłane są dane. Jeśli użytkownik naciśnie na "Zapisz" to dane są przesyłane do tego samego okna i do pliku, które je zapisuje (np. w bazie danych), jeśli naciśnie "Podgląd" to otwiera się nowe okno, a dane są przesyłane do pliku, który tylko wyświetla zawartość pól formularza. Nie testowałem kodu, więc możliwe, że mogą pojawić się drobne błędy, ale to już sobie na pewno poradzisz.

  1. <form action="" method="post">
  2.  
  3. <!-- pola formularza -->
  4.  
  5. <input type="button" value="Zapisz" onclick="sendform('save.php', '_self')" />
  6. <input type="button" value="Podgląd" onclick="sendform('preview.php', '_blank')" />
  7.  
  8. </form>
  9.  
  10. <script type="text/javascript">
  11. function sendform(a, b)
  12. {
  13. document.forms["nazwaformularza"].action = a;
  14. document.forms["nazwaformularza"].target = b;
  15. document.forms["nazwaformularza"].submit();
  16. }


To jest oczywiście tylko przykład, ale moim zdaniem dość prosty i funkcjonalny.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.