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
try { $dodaj = $pdo -> prepare ('INSERT INTO posty (tytul, tresc, kategoria) VALUES (:tytul, :tresc, :kategoria)'); $dodaj -> bindValue(':tytul', $_POST['tytul'], PDO::PARAM_STR); $dodaj -> bindValue(':tresc', $_POST['tresc'], PDO::PARAM_STR); $dodaj -> bindValue(':kategoria', $_POST['kategoria'], PDO::PARAM_STR); $ile = $dodaj -> execute(); $wynik = $pdo->lastInsertId(); }
Natomiast skrypt ajaxowy wygląda tak:
$("#formpost").submit(function(){ var tytul = $("#tytul").val(); var tresc = $("#trescw").val(); var kategoria = $("#kategoria").val(); var $form = $(this), $inputs = $form.find("input, select, button, textarea"), serializedData = $form.serialize(); $inputs.attr("disabled", "disabled"); if (tytul !== '') { if (tresc !== '') { $.ajax( {type: 'POST', url: 'index.html', data: serializedData, success: function(dane) { $('#tytul').val(''); $('#trescw').val(''); $inputs.removeAttr("disabled"); }}); } else { alert('Jedno z pól nie zostało wypełnione.'); $inputs.removeAttr("disabled"); } } else { alert('Jedno z pól nie zostało wypełnione.'); $inputs.removeAttr("disabled"); } return false; });
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.