Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [advAjax lub alternatywa] Request
zaksmok
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 12.01.2006

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


Witam. Mam sobie formualrz rejestracyjnym, a w nim dwa pola do weryfikacji czy nazwa jest dostępna (załóżmy, że pola to nazwa1 i nazwa2). Przy onsubmit mam ustawioną funkcję validator();. Funkcja ta odpala request przez advAjax i zwraca napis w divie "nazwa jest wolna" lub "nazwa jest zajęta" lub "wystąpił błąd". Tutaj wszystko fajnie, ALE nie moge sobie poradzić ze zwróceniem return false jeśli nazwa jest zajęta / wsytąpi błąd. Próbowałem na pare sposobów przekazać return false i nie daje rady... Pomożecie?
Validator wywołuje makeRequest dla pola nazwa1 i nazwa2

  1. function makeRequest(type, outputDiv, id)
  2. {
  3. if(id.value=='')
  4. {
  5. reponse('Pole nie może być puste', outputDiv);
  6. }
  7. else
  8. {
  9. url = 'return.php?id='+id.value+'&type='+type;
  10.  
  11. advAJAX.get({
  12. url: url,
  13. onSuccess : function(obj){},
  14. onError : function(obj){},
  15. onFinalization : function(obj) {return 'smok';}
  16. });
  17. }
  18.  
  19. }
  20.  
  21. function reponse(text, outputDiv)
  22. {
  23. so_clearInnerHTML(document.getElementById(outputDiv));
  24. eDIV = document.createElement("div");
  25. eDIV.setAttribute("id","repon");
  26. eDIV.appendChild(document.createTextNode(text));
  27. document.getElementById(outputDiv).appendChild(eDIV);
  28.  
  29. }
  30.  
  31. function so_clearInnerHTML(obj) {
  32. while(obj.firstChild) obj.removeChild(obj.firstChild);
  33. }


Tutaj akurat zastowałem advAjax, ale próbowałem także mootools i podobnie nie potrafie zwrócić lub true...

Ten post edytował zaksmok 8.08.2008, 09:38:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Ar2r
post
Post #2





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Przecież sekcja onSuccess jest pusta więc co robisz przy pomocy Ajaxa?
Go to the top of the page
+Quote Post
zaksmok
post
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 12.01.2006

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


normalnie jest tam

  1. onSuccess : function(obj){ reponse(obj.responseText, outputDiv) },


a chciałbym się dowiedzieć jak mogę przesłać return false...

Ten post edytował zaksmok 8.08.2008, 10:34:54
Go to the top of the page
+Quote Post
Ar2r
post
Post #4





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Nieraz rozwiązania najprostsze są wystarczające. Ustawiaj w return.php jakiś tekst w przypadku gdy rekordy wystąpią w bazie (np. false) lub zwracaj pustą odpowiedź. Teraz w JS w przypadku pustego obj.responseText lub zawierającego to ustalone słowo (np. false) wyświetlaj komunikat o tym że nazwa jest zajęta.
Do obsługi błędów użyj sekcji onError
Go to the top of the page
+Quote Post
zaksmok
post
Post #5





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 12.01.2006

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


no tak, ale wyświetlenie komunikatu nie zablokuje mi akcji submit przecież.
Go to the top of the page
+Quote Post
Ar2r
post
Post #6





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


No to zrób przycisk do wysylania jako button i jak będzie wszystko w porządku to w JS zrób form.submit()
Go to the top of the page
+Quote Post
zaksmok
post
Post #7





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 12.01.2006

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


hehe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) a jak ktoś będzie miał wyłączony js to nie będzie mógł wysłać formularza wcale? Problem chyba już rozwiązałem. w metodzie onSuccess: dorzucam {document.myVariable = true;} a następnie po wywołaniu makeRequest odczytuje wartość myVariable i w funkcji Validator robie return dla formularza. Być może znacie jakieś lepsze rozwiązanie? Wydaje mi się, że można jeszcze ewentualnie wyłować form.onsubmit = false w momencie błędu, ale wtedy zablokuje się dalszą weryfikacje formularza. Czekam na jakieś propozycje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Jednak nie... Wartość zapisuje się dopiero po wykonaniu onsubmit... Czekam dalej na help (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował zaksmok 8.08.2008, 11:05:47
Go to the top of the page
+Quote Post
Ar2r
post
Post #8





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Jak ktoś będzie miał wyłączony js to twoje skrypty walidujące też nie zadziałają(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) hehe
Możesz skorzystać z onsubmit w formie, a przycik typu submit
Go to the top of the page
+Quote Post
zaksmok
post
Post #9





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 12.01.2006

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


no nie zadziałają skrypty walidujące, ale formularz będzie działać. A jak wstawie button to nie wyśle bez JS. Chyba, że dopisze input type="submit" w <noscript></noscript> bo niepotrzebnie komplikuje kod.
Go to the top of the page
+Quote Post
Ar2r
post
Post #10





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Zrób może tak
- funkcja którą wywołujesz w onsubmit standardowo zwraca false
- w onSuccess jeśli warunki są poprawne wyślij formularz
Go to the top of the page
+Quote Post
zaksmok
post
Post #11





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 12.01.2006

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


też o tym myślałem, ale zauważ, że mam dwa takie pola i return true mogę zwrócić tylko wtedy, kiedy oba pola będą poprawne... Dlatego próbuje wynik requesta zapisać do zmiennej / tablicy w funkcji validator, na końcu zweryfikować dane i wykonać return odpowiedni... Dodatkowo fomularz ma kilka pól, które są weryfikowane, aby nie były puste, więc nie mogę tak zrobić jak napisałeś.
Go to the top of the page
+Quote Post
Ar2r
post
Post #12





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


A w czym problem?
Ta funkcja wywoływana w onsubmit powinna zawierać normalną walidację pozostałych pól. Jeśli zakończy sie ona sukcesem wywołujesz dopiero Ajaxa
W pliku php do którego odwołuje się Ajaxa sprawdzaj od razu oba warunki na te 2 pola

Ten post edytował Ar2r 8.08.2008, 11:25:27
Go to the top of the page
+Quote Post
zaksmok
post
Post #13





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 12.01.2006

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


no i traci sie tutaj uniwersalizm funkcji... W innym formie bede chcial sprawdzic tylko jedno pole i bede musial extra pisac php, js i htmla do obslugi...
Go to the top of the page
+Quote Post

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: 22.12.2025 - 21:14