Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery] Problem z informacją zwrotną z PHP
Forum PHP.pl > Forum > XML, AJAX > AJAX
Barton
Witam,

Po dodaniu rekordu do bazy za pomocą .ajax chcę otrzymać jedną informację zwrotną. Kod realizujący metodę POST dodający rekord do bazy znajduje się w pliku index.html czyli tam gdzie reszta dokumentu. Kod php

  1. try {
  2. $dodaj = $pdo -> prepare ('INSERT INTO posty (tytul, tresc, kategoria) VALUES (:tytul, :tresc, :kategoria)');
  3.  
  4. $dodaj -> bindValue(':tytul', $_POST['tytul'], PDO::PARAM_STR);
  5. $dodaj -> bindValue(':tresc', $_POST['tresc'], PDO::PARAM_STR);
  6. $dodaj -> bindValue(':kategoria', $_POST['kategoria'], PDO::PARAM_STR);
  7.  
  8. $ile = $dodaj -> execute();
  9.  
  10. $wynik = $pdo->lastInsertId();
  11. $dane = json_encode(array('id' => $wynik));
  12.  
  13. echo $dane;
  14. }


Natomiast skrypt ajaxowy wygląda tak:

  1. $("#formpost").submit(function(){
  2.  
  3. var tytul = $("#tytul").val();
  4. var tresc = $("#trescw").val();
  5. var kategoria = $("#kategoria").val();
  6.  
  7. var $form = $(this),
  8. $inputs = $form.find("input, select, button, textarea"),
  9. serializedData = $form.serialize();
  10. $inputs.attr("disabled", "disabled");
  11.  
  12. if (tytul !== '') {
  13. if (tresc !== '') {
  14. $.ajax( {type: 'POST', url: 'index.html', data: serializedData, success: function(dane) {
  15.  
  16. $('#tytul').val('');
  17. $('#trescw').val('');
  18. $inputs.removeAttr("disabled");
  19.  
  20. $('#tresclewa').prepend('<div class=\"post\">' + dane.id + '</div>');
  21.  
  22. }});
  23. }
  24. else {
  25. alert('Jedno z pól nie zostało wypełnione.');
  26. $inputs.removeAttr("disabled");
  27. }
  28. }
  29. else {
  30. alert('Jedno z pól nie zostało wypełnione.');
  31. $inputs.removeAttr("disabled");
  32. }
  33.  
  34. return false;
  35. });



Problem polega na tym że wszystko się dodaje, ale zmienna dane.id zwraca swoją wartość jako undefined. Po dodaniu dataType: 'json', skrypt w ogóle nie działa.

Po pierwsze, dlaczego po dodaniu "dataType: 'json'" skrypt przestaje działać?

Po drugie, dlaczego 'dane.id' zwraca 'undefined'? Czy możliwą przyczyną jest to że w związku z tym iż wszystko jest realizowane w index.html, reszta informacji 'zakłóca odbiór' danych? Próbowałem dodać na końcu kodu PHP exit; ale nic to nie zmieniło.
d3ut3r
Za pomocą firebuga sprawdź co zwraca Ci zapytanie ajaxowe i w 5 minut będziesz wiedział zapewne co i jak.
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.