Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js -> php] Przekazanie dużej ilości danych
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam,
w jaki sposób mogę przekazać sporą liczbę znaków z formularza poprzez JS do PHP?
Mam takie coś: formularz, w którym jest zwykłe pole textarea, w którym wpisuję tekst. Pod spodem mam przycisk 'Podgląd' i po jego wciśnięciu chciałbym otworzyć okienko popup, w nim odebrać zawartość pola textarea i przelecieć ją w PHP funkcją markdown().
Chciałem wysłać cookie (w JS) z zawartością pola przed otwarciem popupa i odebrać je w PHP ale nie bardzo chce to działać:
  1. function preview() {
  2. var description = document.getElementById('article_description').value;
  3.  
  4. SetCookie('preview', description);
  5. openPopUp(backend + '/article/preview', 800, 600);
  6. }

  1. <?php
  2. if (isset($_COOKIE['preview'])) {
  3. echo $_COOKIE['preview'];
  4.  
  5. unset($_COOKIE['preview']);
  6. }
  7. ?>

Powyższy kod nie wyświetla nic (SetCookie z http://www.acm.uiuc.edu/webmonkeys/javascript/cookies.js). Gdy przekażę zmienną preview metodą GET i w ten sposób odbiorę ją w PHP wszystko jest ok do momentu zbyt dużej ilości tekstu (a właśnie chcę przesyłać sporą ilość):
  1. Request-URI Too Large
  2.  
  3. The requested URL's length exceeds the capacity limit for this server.

Czy znacie jakiś sposób na rozwiązanie tego problemu?

Ten post edytował phpion.com 12.08.2007, 11:14:50
Go to the top of the page
+Quote Post
sticker
post
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


możesz zmienić ustawienia apache ?


--------------------
Go to the top of the page
+Quote Post
b_chmura
post
Post #3





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


proponuje użyć linlk
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Ustawień Apache nie bardzo mogę zmienić (u siebie tak ale na serwerze docelowym już nie). AdvAJAX? Hmmm nie bardzo widzę jak to zrobić z otwieraniem podglądu w nowym oknie. Możnaby coprawda zrzucić zawartość pola do pliku, otworzyć okno i w nim pobrać dane z tego pliku ale to by było chyba zbyt przekombinowane.
Jakieś inne pomysły?
Przekazywanie danych poprzez URL jednak odpada z racji występowania znaków typu np. #. Możnaby coprawda je kodować i przy odbiorze dekodować... ale może jest inne wyjście?
Go to the top of the page
+Quote Post
b_chmura
post
Post #5





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


dzięki AdvAJAX możesz sporą liczbę znaków przesłać POST'em
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No tak, fajnie, tylko jakoś nie bardzo wiem jak widziałbyś zastosowanie tego w moim przypadku (click w 'Preview' -> otworzenie popupa -> wyświetlenie zawartości pola ze strony otwierającej po przefiltrowaniu funkcją markdown()). Mógłbyś mi to opisać?
Go to the top of the page
+Quote Post
batman
post
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




A nie prościej będzie wysłać formularz do okna pop-up? Ustawiasz przy pomocy javascrit target i action. Mniej więcej tak to będzie wyglądać:

  1. function funkcja() {
  2. document.forms["formularz"].action = "twoj_skrypt.php";
  3. document.forms["formularz"].target = "_blank";
  4. document.forms["formularz"].submit();
  5. }
  6. </head>
  7. <form name="formularz" method="post" action="index.html">
  8. <textarea name="pole"></textarea>
  9. <input type="button" value="pogdlad" onclick="funkcja();" />
  10. </form>
  11. </body>
  12. </html>

Pisane z palca, więc mogłem gdzieś się machnąć.

Zapomniałem dodać, że w pliku php dostęp do zmiennej uzyskasz poprzez tablicę $_POST

Ten post edytował batman 12.08.2007, 18:50:32


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Cienki1980
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


A może zrobić tak:

- otwierasz popupa
- w onLoad dajesz funkcje przypisująca wartości z formularza ( za pomocą opener.window.IDpola.value ) do zmiennych w popupie
- dalej w onLoad wywołujesz ajaxa, który pobierze te zmienne ( już z popupa ) i przerobi je funkcją w php
- funkcja ajaxowa wyświetli co trzeba w popupie


--------------------
404
Go to the top of the page
+Quote Post
phpion
post
Post #9





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




smile.gif
Dzięki wszystkim za zainteresowanie i pomoc. Finalnie wykorzystałem kod batmana - jest zdecydowanie najprostszy i działa dokładnie tak jak chciałem. Niemniej jednak jeszcze raz wam dziękuję smile.gif

Mała edycja - może komuś się przyda. Po wysłaniu formularza do nowego okna należy ponownie przypisać starą akcję i okno docelowe:
  1. function preview() {
  2. document.forms["sf_admin_edit_form"].action = backend + '/article_page/preview';
  3. document.forms["sf_admin_edit_form"].target = "_blank";
  4. document.forms["sf_admin_edit_form"].submit();
  5.  
  6. // przypisanie starych wartosci
  7. document.forms["sf_admin_edit_form"].action = backend + '/article_page/save';
  8. document.forms["sf_admin_edit_form"].target = "_self";
  9. }

W przeciwnym wypadku kliknięcie na submit formularza prześle go do nowej akcji i nowej strony docelowej.
Teraz działa wybornie (przynajmniej na Operze i FF smile.gif )

Edit:
Pozwalam sobie wrócić do tego tematu. Czy jest możliwość aby przes wysłaniem formularz otworzyć popup i do niego skierować formularz?

Ten post edytował phpion.com 16.08.2007, 20:33:29
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 07:26