Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z formularzem ajaxowym
Forum PHP.pl > Forum > XML, AJAX
amster
Witajcie:)

Kurcze mam pewien problem z formularzem;// Chodzi o to, że po naciśnięciu przycisku chciałbym żeby pokazywała się wiadomość;/ Niestety nie działa.. Znaczy działa gdy jest samo fieldset, jednak gdy zmieniam na form, wówczas już nie pokazuje się;/
  1. <form class="form" method="POST">
  2. input type="hidden" name="send"/>
  3. <p class="login">
  4. <label for="login">Login</label>
  5. <input class="log" type="text" name="login" id="name" />
  6. </p>
  7. <p class="login">
  8. <label for="haslo">Hasło</label>
  9. <input type="text" name="haslo" />
  10. </p>
  11. <p class="checkbox">
  12. <input type="checkbox" name="pamietaj"><b>Zapamiętaj</b><br />
  13. </p>
  14. <p class="submit">
  15. <input id="sendMail" type="submit" name="submit" onclick="closeForm()"/>
  16. </p>
  17. </form>
  18.  
  19. <span id="message">Formularz został wysłany pomyślnie.</span>


i funkcja wywołująca go:
  1. function closeForm(){
  2. $("#messageSent").show("slow");
  3. setTimeout('$("#messageSent").hide();$("#contactForm").slideUp("slow")', 2000);
  4. }



Baaardzo będę wdzięczny za pomoc..
matino
Może zamień #messageSent na #message, a #contactForm na .form?
nospor
Przecież klikając na submit wysyłasz forma czyli przeładowujesz stronę. Nic więc dziwnego, że ci nie działa.
Jeśli submitem nie chcesz wysyłać forma to zablokuj przycisk submit, o tak:
onclick="closeForm();return false;"
amster
nospor smile.gif) Pomogłeśwink.gif Teraz się wyświetla. Tylko sprawa jest głębsza ponieważ formularz będzie wysyłany... To jest formularz logowania, dlatego chce żeby w miejscu MessageSent pojawiał się komunikat błędnego podania hasła jeśli tak się wydarzy...

Czy wiecie jak to powiązać?
nospor
Skoro dałeś to w dziale ajax to zakładam, że chcesz to zrobić ajaxem. W takim razie pytanie do Ciebie: gdzie tu jest ajax? Nigdzie nie widzę.
amster
Hmm, szczerze powiem, że chwile czytałem i widziałem tutek odbywający się na polach fieldset i wszystko ładnie działało;/ Nie sądziłem iż musi być to rozlegle rozbudowane;/ Tak więc laik ze mnie w tej dziedzinie, tylko, że właśnie do panelu logowania na stronie idealnie pasowałoby mi to.. Hmm trudna droga żeby to wykonać? Bo z czasem na wykonanie u mnie trochę krucho:-/

Nie chce spamować, ale czy chodzi mniej więcej o taką strukturę?
Link Tutorial
markonix
Nie, znacznie łatwiej to będzie wyglądać.

http://api.jquery.com/jQuery.post/
Wysyłasz formularz pod adres gdzie byś go normalnie wysłał - tam gdzie jest skrypt logowania.
Plik ten musi Ci zwrócić dane - najprościej html lub json - w zależności co zwróci wyświetlasz błąd lub np. robisz przekierowanie.

Zamiast onClick użyj http://api.jquery.com/submit/
Zatrzymanie wysłania submit http://api.jquery.com/event.preventDefault/
amster
Oooooo! Na pewno to zobacze:) Tyle , że chyba nie będę miał dziś czasu bo podstrony męczę..

hmmm, a powiedz mi, czy modyfikowanie tego skryptu na wyświetlanie komunikatów ajaxowe będzie trudną rzecząquestionmark.gif W ogóle co powiesz na temat skryptu? Może byćquestionmark.gif
  1. include('config.php');
  2. if(isset($_POST['send'])) {
  3. if (empty( $_POST['login'] ) || empty( $_POST['haslo'] ) )
  4. {
  5. echo '<p id="messageSent">Musisz podać login oraz hasło</p>';
  6. }
  7. else
  8. {
  9. $login = mysql_real_escape_string($_POST['login']);
  10. $haslo = mysql_real_escape_string(md5($_POST['haslo']));
  11.  
  12. $zapytanie = "SELECT * FROM administracja WHERE login = '$login' and haslo = '$haslo'";
  13. $idzapytania = mysql_query($zapytanie);
  14. $user = mysql_fetch_array($idzapytania);
  15.  
  16. if($login == $user['login'] && $haslo == $user['haslo'])
  17. {
  18. if(isset($_POST['pamietaj']))
  19. {
  20. $_SESSION['login'] = $user['login'];
  21. setcookie("admin","admin", time()+60);
  22. header("location: admin");
  23. }
  24.  
  25. $_SESSION['login'] = $user['login'];
  26. }
  27. else
  28. {
  29. echo '<p id="messageSent">Podałeś błędny login lub hasło</p>';
  30. }
  31.  
  32. }}
  33.  
  34. if($_SESSION['login'] || isset($_COOKIE['admin']))
  35. {
  36. header("location: admin");
  37. }
  38. else
  39. {
  40. echo '<form class="form" method="POST">
  41. <input type="hidden" name="send"/>
  42. <p class="login">
  43. <label for="login">Login</label>
  44. <input class="log" type="text" name="login" id="name" />
  45. </p>
  46. <p class="login">
  47. <label for="haslo">Hasło</label>
  48. <input type="text" name="haslo" />
  49. <p class="checkbox">
  50. <input type="checkbox" name="pamietaj"><b>Zapamiętaj</b><br />
  51. </p>
  52.  
  53. <p class="submit">
  54. <input class="submit" type="submit" name="submit" value="" onclick="closeForm()" />
  55. </p>
  56. </form>';
  57. }
  58.  
  59. mysql_close($connect);


Jeszcze chciałbym dorobić, że po 3 błędnych logowania powstaje blokada, ale na tą chwilę nie wiem jak się za to zabrać i podejrzewam, iż musiałbym trochę posiedzieć..
markonix
Blokada po stronie serwera - IP zapisywane w bazie z datą unix lub słabsza metoda - sesja (tylko jeśli to ma być chwilowa blokada).

Kod, który służy do logowania po stronie PHP w żaden sposób nie określa czy będzie go trudno przerobić na ajax bo NIE MA TO ZNACZENIA.
Ajax to metoda, sposób na przesyłanie informacji, a nie skrypty. Za pomocą paru linijek kodu wysyłasz dane z formularza pod określony link pod, którym jest skrypt PHP (i jakie tu ma znaczenie jego długość?). Skrypt zwraca jakieś komunikaty - najprościej po prostu to co wyświetlisz za pomocą "echo". Komunikaty te już odbierasz po stronie JS - i na podanych stronach są przykłady.
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.