Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Ajax,jQuery] Przypisanie danych przed wysłaniem
Forum PHP.pl > Forum > XML, AJAX > AJAX
damianooo
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 ?
viking
Dane wyciągasz po id które w dokumecie może być jedno unikalne.
Comandeer
A czemu nie wsadzić tego do jednego formularza i wówczas go posłać po zserializowaniu → http://api.jquery.com/serialize/
damianooo
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.
Comandeer
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.
damianooo
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
Comandeer
A jaki błąd dokładnie rzuca Firebug?
damianooo
a jednak działą smile.gif

wielkie dzięki za pomoc.

Pozdrawiam
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.