Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [advAJAX]Problem z wysyłaniem formularza
Forum PHP.pl > Forum > XML, AJAX > AJAX
Mystic007
Mam problem z wysyłaniem formularza bez przeładowania strony. Czytałem to oraz to i nadal nie mogę sobie poradzić. Mam taki kod (na razie nie robi nic specjalnego):
  1. <script type="text/javascript" src="advajax.js"></script>
  2. <script type="text/javascript">
  3. advAJAX.assign(document.getElementById("form"), {
  4. onSuccess : function(obj) {
  5. alert(obj.responseText);
  6. }
  7. onError : function(obj) {
  8. alert('! '+obj.responseText);
  9. }
  10. onFinalization : function(obj) {
  11. alert('!! '+obj.responseText);
  12. }
  13. });
  14. </script>
  15.  
  16. <form method="post" action="form.php" id="form">
  17. <input type="text" name="a" value="" />
  18. <input type="submit" value="OK!" />
  19. </form>

jest to wycinek z pliku form.php. Proszę o pomoc.
TomASS
Ale jaki masz problem?
klasa advAJAX jeśli napotka błędy w kodzie to wysyła formularz "normalnie" - ot taka fajna sprawa smile.gif
Mystic007
Cytat(TomASS @ 31.07.2006, 16:41 ) *
Ale jaki masz problem?

-"z wysyłaniem formularza bez przeładowania strony."
Cytat(TomASS @ 31.07.2006, 16:41 ) *
klasa advAJAX jeśli napotka błędy w kodzie to wysyła formularz "normalnie" - ot taka fajna sprawa smile.gif

-Czy możesz wskazać owe błędy w kodzie?
devnul
  1. <script type="text/javascript" src="advajax.js"></script>
  2. <script type="text/javascript">
  3. advAJAX.assign(document.getElementById("form")) {
  4. onSuccess : function(obj) {
  5. alert(obj.responseText);
  6. }
  7. onError : function(obj) {
  8. alert('! '+obj.responseText);
  9. }
  10. onFinalization : function(obj) {
  11. alert('!! '+obj.responseText);
  12. }
  13. });
  14. </script>
  15.  
  16. <form method="post" action="form.php" id="form">
  17. <input type="text" name="a" value="" />
  18. <input type="submit" value="OK!" />
  19. </form>
a teraz?
UNK
Moze nie znam sie na tym wszystkiem jakos bardzo bardzo dobrze, ale moze jak cos dodam to pomoze tongue.gif

  1. <script type="text/javascript" src="advajax.js"></script>
  2. </head>
  3.  
  4.  
  5. <script type="text/javascript">
  6. function wyslij(id)
  7. {
  8. advAJAX.assign(document.getElementById(id)) {
  9. onSuccess : function(obj) {
  10. alert(obj.responseText);
  11. }
  12. onError : function(obj) {
  13. alert('! '+obj.responseText);
  14. }
  15. onFinalization : function(obj) {
  16. alert('!! '+obj.responseText);
  17. }
  18. });
  19. }
  20.  
  21. <form onsubmit="wyslij('form');" method="post" action="form.php" id="form">
  22. <input type="text" name="a" value="" />
  23. <input type="submit" value="OK!" />
  24. </form>
  25.  
  26. </body>
TomASS
Tak działa:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript" src="../advajax.js"></script>
  5. <script type="text/javascript">
  6. function a_ta_funkcja_gdzie_jest() {
  7.  
  8. advAJAX.assign(document.getElementById("loginForm"), {
  9. onSuccess : function(obj) {
  10. alert(obj.responseText);
  11.  
  12. }
  13. });
  14. }
  15. </head>
  16. <body onload="a_ta_funkcja_gdzie_jest()">
  17.  
  18. <form method="post" action="1.php" id="loginForm">
  19. <input type="text" name="a" value="" />
  20. <input type="submit" value="OK" id="submitBtn" />
  21.  
  22. </form>
  23. </body>
  24. </html>

Brakuje Ci funkcji która jest ładowana z elementem <body> oraz to, że formularzy (chyba) nie może mieć id=form
yasiek
Ech... to ja się teraz męczę nad inną rzeczą. Z javą script jest u mnie bardzo średnio... więc może ktoś mi pomoże. Jak zrobić, żeby teraz zamiast alertu, pojawiał się responseText, w divie, w którym był formularz?
UNK
musisz sie odnieść do id diva w którym był ten formularz, może że nie był w żadnym to musisz go tam wrzucić tongue.gif

  1. <div id='test'>
  2. <form ...>
  3. ...
  4. </form>
  5. </div>


A w skrypcie JS musisz dodać
  1. document.getElementById('test').innertHTML = responseText;

zamiast alerta.

PS. Mam nadzieję że o to chodzi :-)
yasiek
Tak, o to chodziło. Ale udało mi się nawet dojść do tego samemu...tongue.gif to teraz mi jeszcze powiedz, czy mogę dodać jakiś button, albo coś w tym stylu, który resetowałby tego diva do początkowej postaci smile.gif dzięki!
UNK
heh, jeśli formularz też jest wsadzany do tego diva dynamicznie to nie ma problemu, jeśli jednak on jest na stronie po odświeżeniu, a potem się traci, to musisz napisać mały skrypcik w JS który by te wszystkie elementy z powrotem tam pokazał (jednak jak na mój gust łatwiej będzie znowu dynamicznie wstawić formularz).

PS. Musisz pamiętać że advAJAX nie ma możliwości wykonywania skryptu JS po ściągnięciu fragmentu strony, musisz sobie jakoś poradzić z tym :-)

PS2. Nie wykonuje skryptów w <script> ... </script>, ale w onclick='przywroc();' wykona (o ile dobrze pamiętam)
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.