Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP+Ajax]Przeładowanie strony + JSON
wizarts
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 19.11.2012

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



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:

  1. $.ajax({
  2. type: "POST",url: "klient_add.php",
  3. data: data,
  4. datatype: 'json',
  5. success: function(jsonRet){
  6. if($.trim(jsonRet['errorCode'])==1){
  7. alert("Klient został prawidłowo dodany do bazy danych.");
  8. }
  9. else
  10. {
  11. alert("Wystąpił błąd podczas zmiany danych klienta: " + jsonRet['errorMsg']);
  12. }
  13. }
  14. });
  15. }


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
  1. <form id="clientAddForm" style="display:none" method="post" target="klient.php">
  2. <input type="hidden" name="klient_id" value="<?php echo $klient_id ?>" />
  3. </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.

Ten post edytował wizarts 20.04.2013, 20:10:25
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:29