Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] serialize danych modyfikowanych przez jQuery
szczurek
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

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


Witam,
mam formularz który jest ładowany na stronę częściowo. A dokładniej to pojawia się na niej po kawałku.

Użytkownik wypełnia 3 pola kilka zapisz. Wtedy uruchamiana jest funkcja która serializuje dane SendData = $('form').serialize(); i za pomocą $.post(); wysyła je na serwer.

Tam są przetwarzane. Do bazy danych zapisywany jest rekord i zwracany jego identyfikator.

Wtedy za pomocą $.('element').val(); ustawiana jest wartość pola.

Skrypt pokazuje użytkownikowi kolejne pola do wypełnienia a wypełnione już blokuje.

Po uzupełnieniu kolejnych pól formularza uruchamiana jest funkcja jQuery, która ponownie ma wykonać

$('form').serialize i wysłać je na serwer. Problem polega na tym, że wtedy już zostają wysłane tylko dane wypełnione ręcznie przez użytkownika. Nie wysyła w ogóle ani danych wpisanych poprzednio z pól wyłączonych. Ani danych z pól ukrytych, których wartości modyfikowane zostały za pomocą $.('element').val();

A patrząc w firebugu te wartości są zmodyfikowane w przeglądarce. Jednak w tablicy $_POST po stronie serwera widać już tylko te wpisane ręcznie przez użytkownika.

Nie wiem czy to bug jQuery czy ja się zabieram za to od złej strony.
Ma ktoś pomysł jak to rozwiązać?


--------------------
"Nie masz żadnej szansy, ale ją wykorzystaj" Arthur Schopenhauer
wiersze
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
devnul
post
Post #2





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


zdaje się że pola wyłączone nie są serializowane przez jquery (wysyłane przez post chyba też nie są) co do ukrytych to szczerze mówiac dziwne - jesteś pewny że masz je w obrębie formularza?


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
szczurek
post
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

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


Tak jestem pewien, że ukryte jest w obrębie formularza. Właściwie nie wysyłanie wyłączonych pól nie będzie tu stanowić problemu jeśli pójdą ukryte.

Z tym ukrytym upatrywałbym problemu z serializacją w tym, że jego wartość przy załadowaniu strony jest pusta a wypełniam ją za pomocą jQuery po wykonaniu pierwszego zapytania.

Poniżej kod formularza skopiowany z firebuga już po odpaleniu tej pierwszej akcji czyli wypełnieniu idAnkiety

  1. <form accept-charset="utf-8" method="post" action="akcja">
  2. <div id="ankieta">
  3. <p>
  4. <input type="hidden" value="41" name="idAnkiety" id="idAnkiety"><label for="AnkietaNazwa">Nazwa ankiety </label><input type="text" value="" name="AnkietaNazwa" id="AnkietaNazwa" disabled=""> </p>
  5. <p>
  6. <label for="AnkietaStart">Data rozpoczęcia ankiety </label><input type="text" class="hasDatepick" value="" name="AnkietaStart" id="AnkietaStart" disabled=""> </p>
  7. <p>
  8. <label for="AnkietaKoniec">Data zakończenia ankiety </label><input type="text" value="" name="AnkietaKoniec" id="AnkietaKoniec" disabled=""> </p>
  9. <p><a onclick="savepoll();" href="#">Zapisz</a></p>
  10. <div class="czesc-ankiety" style="display: block;">
  11. <h2>Część ankiety</h2>
  12. <p><input type="hidden" value="" name="idCzesci" id="idCzesci"><label for="CzesciNazwa">Nazwa części ankiety </label><input type="text" onblur="savePart();" value="" name="CzescNazwa" id="CzescNazwa"></p>
  13.  
  14. <div class="pytanie">
  15. <p><label for="Pytanie">Wybierz pytanie </label><select name="PytanieSelect[]"></select> lub</p>
  16. <p><input type="hidden" value="" name="idPytania"><label for="Pytanie">Dodaj nowe pytanie: </label><input type="text" name="Pytanie[]"></p>
  17. </div>
  18.  
  19. </div>
  20. <p><input type="submit" value="Zakończ ankietę" name="zamknijankiete"></p>
  21. </div>
  22. </form>


--------------------
"Nie masz żadnej szansy, ale ją wykorzystaj" Arthur Schopenhauer
wiersze
Go to the top of the page
+Quote Post
devnul
post
Post #4





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


jeśli chodzi o ukryte pola to wszystko wygląda ok, pokaż JS bo pewnie tam jest problem


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
szczurek
post
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

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


JavaScript
  1. function savepoll()
  2. {
  3. var SendData = $('form').serialize();
  4. $.post('/index.php/ankieta/savepoll',SendData, function(data){showpart(data);},'json');
  5.  
  6. }
  7.  
  8. function showpart(data)
  9. {
  10. $('#idAnkiety').val(data.id);
  11. $('#AnkietaNazwa').attr('disabled',true);
  12. $('#AnkietaStart').attr('disabled',true);
  13. $('#AnkietaKoniec').attr('disabled',true);
  14. $('.czesc-ankiety').show();
  15. }
  16.  
  17. function savePart()
  18. {
  19. var SerializeData = $('form').serialize();
  20.  
  21. $.post('/index.php/ankieta/savepart', SerializeData, function(data){showquestion(data);},'json');
  22. }
  23.  
  24. function showquestion(data)
  25. {
  26. if(data.lenght>0)
  27. {$('#idCzesci').val(data.id);}
  28. $('#CzescNazwa').attr('disabled',true);
  29. $('.pytanie').show();
  30.  
  31.  


Naturalnie jest też zaimportowana biblioteka jQuery 1.4.2

Ten post edytował szczurek 20.09.2010, 19:31:47


--------------------
"Nie masz żadnej szansy, ale ją wykorzystaj" Arthur Schopenhauer
wiersze
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: 19.08.2025 - 18:32