Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Ajax,jQuery] Przypisanie danych przed wysłaniem
damianooo
post 28.06.2016, 19:21:26
Post #1





Grupa: Zarejestrowani
Postów: 444
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


mam przykładowy formularz:

  1. {% for key,match in matches %}
  2. <input type="text" name="firstname[]" id="firstname" '>
  3. <input type="text" name="lastname[]" id="lastname" '>
  4. </form>
  5. {% endfor %}


i wysyłam dane z niego ajaxem do bazy danych:

  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $("#submit").click(function(){
  4. $.ajax({
  5. url:"{{ path('costam') }}",
  6. type:"POST",
  7. data:{
  8. firstname: $("#firstname").val(),
  9. lastname: $("#lastname").val(),
  10. },
  11. ....
  12. </script>


Niestety w bazie po wysłaniu pojawia się tylko jeden nowy rekord, a powinienem mieć 10 nowych rekordów ponieważ tyle przesyłałem w formularzu.

Co robię źle ?
Czy w kodzie jQuery w sekcji "data" mam dobrze zrobione przypisanie danych ?

Ten post edytował damianooo 28.06.2016, 19:23:21
Go to the top of the page
+Quote Post
viking
post 28.06.2016, 19:59:48
Post #2





Grupa: Zarejestrowani
Postów: 4 963
Pomógł: 836
Dołączył: 30.08.2006

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


Dane wyciągasz po id które w dokumecie może być jedno unikalne.


--------------------
Go to the top of the page
+Quote Post
Comandeer
post 28.06.2016, 20:32:19
Post #3





Grupa: Zarejestrowani
Postów: 1 263
Pomógł: 252
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


A czemu nie wsadzić tego do jednego formularza i wówczas go posłać po zserializowaniu → http://api.jquery.com/serialize/


--------------------
Go to the top of the page
+Quote Post
damianooo
post 28.06.2016, 21:13:51
Post #4





Grupa: Zarejestrowani
Postów: 444
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


Viking rozumiem a więc po klasie a nie po ID ...
a więc w formularzu ma być tak:

  1. <input type="text" name="firstname[]" id="firstname" class="firstname">


a w skrypcie tak:

  1. data:{
  2. firstname: $(".firstname").val(),
  3. lastname: $(".lastname").val(),
  4. },


?

tylko chyba nadal coś nie tak bo dodaje mi ciągle po jednym rekordzie.


Ten post edytował damianooo 29.06.2016, 12:49:53
Go to the top of the page
+Quote Post
Comandeer
post 28.06.2016, 22:00:36
Post #5





Grupa: Zarejestrowani
Postów: 1 263
Pomógł: 252
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Kombinujesz. Zrób jeden formularz, coś typu:
Kod
<form>
{% for key,match in matches %}
<input type="text" name="firstname[{{ key }}]" id="firstname" '>
<input type="text" name="lastname[{{ key }}]" id="lastname" '>
{% endfor %}
</form>

I proponuję przesłać ten formularz po serializacji.


--------------------
Go to the top of the page
+Quote Post
damianooo
post 29.06.2016, 12:22:05
Post #6





Grupa: Zarejestrowani
Postów: 444
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


ok spróbuję z serializacją.

nie wiem jednak czy ja to robię dobrze:

  1. <div class="form">
  2. <div class="coupon_form">
  3. {% for key,match in matches %}
  4. <input type="hidden" name="match_id[]" id="match_id" class="match_id" value="{{ match.match_id }}">
  5. <div class="coupon_form_desc">
  6. {{ match.description }}
  7. </div>
  8. <div class="coupon_form_host">
  9. {{ match.host }}
  10. </div>
  11. <div class="coupon_form_host_type">
  12. <input type="text" name="hostType[]" id="hostType" class="hostType" maxlength='1'>
  13. </div>
  14. <div class="coupon_form_dash">-</div>
  15. <div class="coupon_form_guest_type">
  16. <input type="text" name="guestType[]" id="guestType" class="guestType" maxlength='1'>
  17. </div>
  18. <div class="coupon_form_guest">
  19. {{ match.guest }}
  20. </div>
  21. <div class="coupon_form_term">
  22. {{ match.term }}
  23. </div>
  24. {% endfor %}
  25. </div>
  26. <input id="submit" type="submit" value="Submit">
  27. </div>
  28.  
  29. <script type="text/javascript">
  30. $(document).ready(function(){
  31. $("#submit").click(function(){
  32. $.ajax({
  33. url:"{{ path('typerka_types') }}",
  34. type:"POST",
  35. data: $(".form").serialize(),
  36. dataType:"JSON",
  37. success:function(data){
  38. console.log(data);
  39. alert(data);
  40. },
  41. error: function() {
  42. console.log("Wystąpił błąd");
  43. }
  44. });
  45. });
  46. });


jak patrzę w Firebugu to console.log wyświetla mi "wystąpił błąd" - dlaczego ?
Poza tym dostaję następujący kod błędu serwera: 500 Internal Server Error

Ten post edytował damianooo 29.06.2016, 13:07:55
Go to the top of the page
+Quote Post
Comandeer
post 29.06.2016, 14:02:02
Post #7





Grupa: Zarejestrowani
Postów: 1 263
Pomógł: 252
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


A jaki błąd dokładnie rzuca Firebug?


--------------------
Go to the top of the page
+Quote Post
damianooo
post 29.06.2016, 20:06:27
Post #8





Grupa: Zarejestrowani
Postów: 444
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


a jednak działą smile.gif

wielkie dzięki za pomoc.

Pozdrawiam
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: 15.10.2018 - 16:48