$.post nie działa przy pierwszym użyciu.

Odpowiedz Nowy wątek
2011-07-10 12:54
proton
0

Mam taki kod:

 $("#config_form").submit(function(){
 $.post("/costam", $("#config_form").serialize(), function(data) {
 if(data.result == 'success')
 {
 $('h4.alert_success').show('slow');
 }
 else
 { 
 $('h4.alert_error').show('slow');
 }
 }, "json");
 });

Jednak kiedy na stronie użyję submit'a formularz zostaje wysłany jak normalny formularz html, dopiero za drugim i każdym następnym razem przechodzi przez jQuery.
Próbowałem ustawić action na:

action=""
action="/"
action="#"

ale bez zmian.

Pozostało 580 znaków

2011-07-10 12:59
0

A jakim cudem docierasz do drugiego i trzeciego razu, skoro już za pierwszym formularz jest wysyłany, a więc strona się przeładowuje, czyli (z punktu widzenia JavaScriptu) lecisz od nowa...?

edytowany 1x, ostatnio: bswierczynski, 2011-07-10 12:59

Pozostało 580 znaków

2011-07-10 13:12
0

Nie jestem pewien, ale możesz spróbować:

 $("#config_form").submit(function(){
 $.post("/costam", $("#config_form").serialize(), function(data) {
 if(data.result == 'success')
 {
 $('h4.alert_success').show('slow');
 }
 else
 { 
 $('h4.alert_error').show('slow');
 }
 }, "json");
return false;
 });

edytowany 1x, ostatnio: Patryk27, 2011-07-10 15:19
No... nie. Ten return sprawi, że reszta funkcji przekazanej do submit() nie zostanie wykonana. return natychmiast kończy działanie funkcji. Trzeba by to dać na koniec żeby miało jakiś sens. - bswierczynski 2011-07-10 13:14
Heh. Zapomniałem ;) - Patryk27 2011-07-10 15:19

Pozostało 580 znaków

2011-07-10 14:03
proton
0
bswierczynski napisał(a)

A jakim cudem docierasz do drugiego i trzeciego razu, skoro już za pierwszym formularz jest wysyłany, a więc strona się przeładowuje, czyli (z punktu widzenia JavaScriptu) lecisz od nowa...?

Opisałem tylko jak się objawia problem, gdybym go rozumiał nie zakładał bym wątku ;) (jedyna różnica, za wyjątkiem pierwszego, w każdym kolejnym odświeżeniu przesyłane są dane z formularza)

@Patryk27
Masz rację, z tym że return false musiałem dać za $.post(). Domyślam się, że javascript przechwytuje tylko dane z formularza i zwraca wynik do html'a - zwróci true: html kontynuuje, false: przerwanie.
Dzięki za podpowiedź wszystko działa.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0