Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][jquery]Pobranie wartości z formularza
Mlodycompany
post 30.07.2010, 17:28:49
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam. Otóż mam pewną stronę gdzie otwiera się okienko, tak zwany "modalbox". W tym okienku mam formularz który jest ładowany podczas otwierania modalboxa a nie podczas ładowania strony. Problem polega na tym, że próbuje pobrać wartości z tego formularza ale coś nie daje rady, znaczy daje rade pobrać ale z innego(ze strony glównej).
Skrypt który pobiera te dane
  1. var form = $("form").serialize();
  2. $.post("cms/class/load.php", { func:"editArt", form:form }, function(data){
  3. $('#modal').html(data);
  4. });

Proszę o pomoc

Ten post edytował Mlodycompany 30.07.2010, 17:29:04
Go to the top of the page
+Quote Post
pedro84
post 30.07.2010, 17:36:36
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Zobacz najpierw tutaj: http://api.jquery.com/jQuery.post/


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
Mlodycompany
post 30.07.2010, 17:44:50
Post #3





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Wydaje mi się kolego, że nie w $.post tkwi problem. Zamiast tego mogę dać alert(form) i wyświetli mi dane z formularza ze strony głównej a nie z modalboxa. Problem tkwi w pobieraniu danych. Wydaje mi się, że ten drugi formularz nie jest poprostu widziany przez skrypt ale mogę się mylić.
Go to the top of the page
+Quote Post
everth
post 30.07.2010, 17:45:09
Post #4





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Nadaj swojemu formularzowi jakieś unikatowe id np.
  1. <form id='form_w_okienku' method='post' action='twojphp.php'>
  2. /* kod formularza */
  3. </form>

I zmodyfikuj skrypt:
[JAVASCRIPT] pobierz, plaintext
  1. var form = $("#form_w_okienku").serialize();
[JAVASCRIPT] pobierz, plaintext



--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Mlodycompany
post 30.07.2010, 17:57:57
Post #5





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


no przykro mi ale nie działa.
Go to the top of the page
+Quote Post
everth
post 30.07.2010, 18:40:04
Post #6





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Daj więcej danych (formularz+skrypt) bo tak to można w ciemno zgadywać (jak jest duży to wklej.org)


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Mlodycompany
post 30.07.2010, 18:51:33
Post #7





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


To jest formularz w tym całym magicznym modalboxie
  1. <div id="n_'.$mfa[0][0].'"><form id="form"><table border="1" width="100%"><tr><th>Temat</th><td><input type="text" id="temat_'.$mfa[0][0].'" value="'.$mfa[0]['temat'].'"></td></tr><tr><th>Treść</th><td><ul style="display: inline;"><li style="display: inline;"><a href="java script:wstawKod(\'tresc_'.$mfa[0][0].'\', \'\')">B </a></li><li style="display: inline;"><a href="java script:wstawKod(\'tresc_'.$mfa[0][0].'\', \'\')">U </a></li><li style="display: inline;"><a href="java script:wstawKod(\'tresc_'.$mfa[0][0].'\', \'\')">I </a></li><li style="display: inline;"><a href="java script:wstawKod(\'tresc_'.$mfa[0][0].'\', \'[img][/img]\');">IMG </a></li><li style="display: inline;"><a href="java script:wstawKod(\'tresc_'.$mfa[0][0].'\', \'\')">URL </a> </li><li style="display: inline;"><a href="java script:wstawKod(\'tresc_'.$mfa[0][0].'\', \'[youtube][/youtube]\')">YouTube </a> </li></ul></br><textarea cols="60" rows="7" id="tresc_'.$mfa[0][0].'">'.$mfa[0]['tresc'].'</textarea></td></tr><tr><th>Miniaturka</th><td><img src="'.config::URL.'thumbes/'.$mfa[0]['miniaturka'].'" width="50"></td></tr><tr><th>Kategoria</th><td><select id="kategoria_'.$mfa[0][0].'">'.$kategorie.'</select></td></tr><tr><th>Dostęp</th><td><select id="dostep_'.$mfa[0][0].'">'.$poziomStr.'</select></td></tr><tr><th>Kolejność</th><td><input type="text" id="kolejnosc_'.$mfa[0][0].'" value="'.$mfa[0]['kolejnosc'].'"></td></tr><tr><td colspan="2"><div id="buttons"><ul><li><input type="button" id="cancelbut" name="action" value="Anuluj" onclick="editArt(\''.$ex2[0].'\', \'0\''.$next.')"></li><li><input type="button" id="acceptbut" name="action" value="Zapisz" onclick="editArt(\''.$ex2[0].'\', \'1\''.$next.');"></li></ul></div></td></tr></table></form></div>

  1. function editArt(id, s, next){
  2. if(s == 0){
  3. var str = '<div id="actiontrue">Anulowano edytowanie #'+id+'</div>';
  4. $('#modal').html(str);
  5. }
  6. if(s == 1){
  7. var form = $("#form").serialize();
  8. alert(form);
  9. $.post("cms/class/load.php", { func:"editArt", id:id, form:form }, function(data){
  10. $('#modal').html(data);
  11. });
  12. }
  13. if(next != undefined){
  14. $.post("cms/class/load.php", { func:"editArts", results:next }, function(data){
  15. str = str + data;
  16. $('#modal').html('<img src="cms/images/loading.gif" width="30" align="center">');
  17. $('#modal').html(str);
  18. });
  19. }
  20. else{
  21. str += '<div id="close"><a href="java script:display(\'modal\', 0)"><img src="cms/images/del.png" width="25"></a></div>';
  22. $('#modal').html(str);
  23. }
  24. }

No i wzasadzie tyle powinno starczyć. Powiem jeszcze, że w głównym oknie znajduje się tabela ze wszystkimi newsami i są checkboxy i w/w skrypt zczytuje które checkboxy są zaznaczone
Go to the top of the page
+Quote Post
everth
post 30.07.2010, 19:24:14
Post #8





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Prawdopodobna odpowiedź - twoje input i textarea nie mają znacznika name (czyli nie zostaną zserializowane). Ponadto zaoferuję ci kilka rad:
  • nie wywołuj zdarzeń JS w kodzie html (możesz bindować zdarzenia w pliku JS) - łatwiejsze do utrzymania
  • inputy nie muszą koniecznie posiadać id (chyba że są konkretne do ostylowania) - name i class wystarcza
  • jeśli oczekujesz odpowiedzi na przyszłość to formatuj kod - nie każdy ma czas przerzucać go do IDE



--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Mlodycompany
post 31.07.2010, 08:25:16
Post #9





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Dziękować. Pomogło. Teraz jeszcze mam pytanie. Zamienia mi np. [u] na %5B. Jak to zmienić?
Go to the top of the page
+Quote Post
everth
post 31.07.2010, 18:20:00
Post #10





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Spotkałem się kiedyś z tym problemem, niestety już nie pamiętam jak sobie poradziłem. Może zamiast serializować cały form serializowałem poszczególne inputy i dopiero później składałem w zapytaniu np.
[JAVASCRIPT] pobierz, plaintext
  1. {'wybraneInputy':$("#myForm input.wybrane").serialize()}
[JAVASCRIPT] pobierz, plaintext
. Poza tym jeśli inputy mają ten sam 'name' to nie trzeba przy nim dodawać do nazwy [], PHP sam skonstruuje z nich tablicę. Może to ci w czymś pomoże


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
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 Wersja Lo-Fi Aktualny czas: 16.07.2025 - 17:34