W dużym skrócie chodzi o to:
1.klient.php wysyła post do klient_add.php
2.klient_add.php robi co ma zrobić i wysyła obiekt json do klient.php ( errorCode, errorMsg, klient_id)
3.klient.php sprawdza wartość errorCode i dla wartości 1 wyświetla drugi formularz z danymi adresowymi, dla innych wartości pokazuje alert(errorMsg)
poniżej szczegółowy opis zagadnienia :-)
Są 2 pliki:
klient.php i klient_add.php
W pierwszym znajdują się 2 formularze i funkcja java script:
$.ajax({ type: "POST",url: "klient_add.php", data: data, datatype: 'json', success: function(jsonRet){ alert("Klient został prawidłowo dodany do bazy danych."); } else { alert("Wystąpił błąd podczas zmiany danych klienta: " + jsonRet['errorMsg']); } } }); }
W zmiennej data znajduje się przygotowany ciąg do przesłania do pliku klient_add.php.
Zresztą nie w tym rzecz. Klient dodaje się prawidłowo, więc w tę stronę komunikacja działa bez zarzutu.
Problem polega na tym, że chciałbym aby ajax po zakończeniu działania skryptu na stronie klient_add.php odświeżył plik klient.php przesyłając do niego metodą POST identyfikator nowo dodanego klienta.
Wartość mam zwróconą z procedury do pliku klient_add.php i teraz jak najlepiej, o ile wogóle da się to zrobić:
1. "Zatwierdzić" formularz na stronie klient_add.php
<form id="clientAddForm" style="display:none" method="post" target="klient.php"> </form>
2.Przekazać spowrotem do ajaxa jakąś sensowną zmienną, żeby poinformować funkcję o statusie działania skryptu na stronie klient_add.php
Powrót wartości mam w zasadzia załatwiony JSON'em (dopóki na stronie klient_add.php nie ma formularza clientAddForm),
ale formularz się nie "zatwierdza", bo strona się nie odświeża.
Po co ta cała łamigłówka ?
Na stronie klient.php są 2 formularze. Pierwszy wyświetlony zawsze służy do edycji/wyświetlania danych klienta.
Drugi jest ukryty, ( jeśli strona została wywołana bez wartości $klient_id ) i służy do dodania danych adresowych klienta ( struktura w bazie danych tabela klient i tabela adres ).
Pod pierwszym formularzem jest przycisk zapisz. Użytkownik wciska zapisz dane klienta dodają się do bazy i pokazuje mu się drugi formularz do wprowadzenia danych adresowych.
Oczywiście można to zrobić inaczej.
Pokazać oba formularze, dać przycisk na końcu i w procedurze w bazie danych najpierw dodać dane klienta, zapamiętać identyfikator dodanego rekordu i następnie dodać dane adresowe.
Tylko chciałbym aby użytkownik nie musiał za każdym razem przewijać formularza do końca, żeby kliknąc zapisz. Tylko, żeby pod każdą sekcją danych był taki przycisk.