Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [advajax] przesłanie formularza bez przeładowania
Forum PHP.pl > Forum > XML, AJAX > AJAX
Jim
Witam,
pytanie jak w temacie. w dokumentacji jest podany skrawek kodu:
Kod
advAJAX.submit(document.getElementById("the_form"), {
    onSuccess : function(obj) { alert(obj.responseText); },
    onError : function(obj) { alert("Error: " + obj.status); }
});


i nie wiem, gdzie to wrzucić i co zrobić żeby działało z formularzem
UNK
mozesz np zrobic

Kod
<button onclick="advAJAX.....">przycisk</button>


lub

Kod
<a href='#' onclick="<jw>">wyslij</a>


napewno da sie jeszcze inaczej ale to jest wg. mnie najprostrzy sposob

PS. oczywiscie musisz pamietac o "" i '' w odpowiednich miejscach
duzo latwiej jest chyba ogolnie zrobic to tak

Kod
<script>
function jakas_funkcja() {
advAJAX.submit(document.getElementById("the_form"), {
   onSuccess : function(obj) { alert(obj.responseText); },
   onError : function(obj) { alert("Error: " + obj.status); }
});
}
</script>

<button onclick="jakas_funkcja();">przycisk</button>
Jim
ok, zrobiłem to za pomocą funkcji. Po kliknięciu na przycisk strona jest normalnie przeładowywana i wyrzucany jest taki oto robak:



Błąd jest w bibliotece, ale nie mam pojęcia co może być przyczyną...
UNK
ehh, tak to jest jak pisze sie cos na szybko bez zastanowienia sad.gif

Kod
<script>
function jakas_funkcja(for_name) {
advAJAX.submit(document.getElementById(form_name), {
  onSuccess : function(obj) { alert(obj.responseText); },
  onError : function(obj) { alert("Error: " + obj.status); }
});
}
</script>

<button onclick="jakas_funkcja('form_name');">przycisk</button>


przeciez trzeba przekazac do funckji nazwe formy o ktora chodzi przy wysylaniu formularza...przynajmniej mam nadzieje ze to wlasnie o to chodzi z tym bledem
anopak
ps. a nie lepiej dać do formularza onsubmit?

  1. <form action="." method="post" onsubmit="jakas_funkcja(this); return false;">
  2. (...)
  3. </form>


albo lepiej i czytelniej:
  1. <form id="jakis_form">
  2. (...)
  3. </form>
  4.  
  5. document.getElementById('jakis_form').onsubmit=function(){
  6. jakas_funkcja(this);
  7. return false;
  8. }


wtedy przy wysłaniu formularza, wywoła Ci się ta funkcja, no i ważne jest aby było return false, żeby formularz nie wysłał się normalnie.
Jim
Dzięki za pomoc, już działa biggrin.gif
Teraz chciałbym to odpowiednio dopasować.

Skrypt docelowy formularza zwraca 1(ok) albo 0(błąd) i teraz chciałbym aby w zależności od wyniku pojawiał się sam komunikat (ok), albo komunikat i ponownie formularz z danymi (gdy błąd).

Próbowałem
Kod
if (obj.responseText == 1)

ale to nie działa.

Z samym wyświetlaniem komunikatów nie mam problemu
Kod
          if (...) { // komunikat że dodano, bez formularza
            // usunięcie formularza
            msg = document.getElementById("msg");
            msg.childNodes[0].data = "Dziękuję za zgłoszenie strony";    
            msg.style.color = "green";
            
          } else { // komunikat że nie dodano i ponownie formularz
            msg = document.getElementById("msg");
            msg.childNodes[0].data = "Wystąpił błąd, spróbuj ponownie.";    
            msg.style.color = "red";
          }

chodzi mi tylko o ten warunek i o to jak usunąć formularz winksmiley.jpg

EDIT: przerobiłem skrypt tak że teraz zwraca wynik w xml'u. Co do usuwania formularza to:
Kod
document.getElementById('addform').innerHTML = '';

Będę musiał jeszcze tylko zrobić coś dla tych co nie mają JS, żeby był dla nich zwracany komunikat a nie plik xml...
anAKiN
Najlepiej to użyć advAJAX.assign() w tym wypadku.
arb
witam,

chcialem za pomoca tego rozwiazania zrobic skrypt, ktory bez przeladowania bedzie wysylal jedna z dwoch zmiennych do dzialanie.php :

Kod
<form action="dzialanie.php" method="get" onsubmit="co_robic(this); return false;" name="formularz">
<input name="zrob_to" value="zapisz" type="hidden">
<input type="image" name="submit" src="zapisz.jpg">
</form>

<form action="dzialanie.php" method="get" onsubmit="co_robic(this); return false;" name="formularz">
<input name="zrob_to" value="wyslij" type="hidden">
<input type="image" name="submit" src="wyslij.jpg">

<script>
function co_robic(formularz) {
advAJAX.submit(document.getElementById(formularz), {
onSuccess : function(obj) { alert(obj.responseText); },
onError : function(obj) { alert("Error: " + obj.status); }
});
}
</script>


nie moge znalezc bledu, staralem sie napisac to wg wzoru..
jakies sugestie? dzieki!
marcini82
A nie lepiej uzyc assign(), jak to napisal anAKiN?
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.