Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC a zapytania ajax jquery
Forum PHP.pl > Forum > PHP
uncuncunc
Mam mały problem... wszystkie zapytania w moim FW idą przez index.php i tak:

kontroler:

  1. class Kontroler
  2. {
  3. // czy dostęp do panelu jest możliwy
  4. public $access = false;
  5.  
  6. public function metoda()
  7. {
  8. $o = new pa; // odwolanie do modelu
  9. $o->isLogin(); // sprawdzam czy zalogowany itp.
  10.  
  11. if($o->isLogin())
  12. {
  13. //zaloogwany
  14. }
  15. else
  16. {
  17. $o->checkForm(); // odsylam do metody w modelu która sprawdzi czy formularz został wysłany
  18.  
  19. if($o->checkForm())
  20. {
  21. //wyslany poprawnie
  22. if(is_ajax()) // czy zapytanie przyszlo ajaxem
  23. {
  24. echo json_encode(array('efekt'=> true));
  25. }
  26. }
  27. else
  28. {
  29. // problem
  30. if(is_ajax())
  31. {
  32. echo json_encode(array('efekt'=> false));
  33. }
  34. }
  35. }
  36. }
  37.  
  38. }


Model zwraca tylko true lub false i w opcji bez JS to działa poprawnie, jednak z włączonym JS, cały czas dostaję odpowiedź od kontrolera FALSE. Zapytanie wysyłam tak:

[JAVASCRIPT] pobierz, plaintext
  1. $("form").submit(function()
  2. {
  3. $.ajax({
  4. url: "http://localhost/panel",
  5. type: "POST",
  6. data: "login=admin&password=test",
  7. dataType: "json",
  8. success: function(res) {
  9. alert(res.efekt);
  10. if(res.efekt == true)
  11. {
  12. window.location.replace('#zalogowanyJQ');
  13. }
  14. else
  15. {
  16. window.location.replace('#zle');
  17. }
  18. //$('body').html(msg);
  19. }
  20.  
  21. });
  22. return false;
  23. });
[JAVASCRIPT] pobierz, plaintext
maniana
Za mało napisałeś, nie można stwierdzić gdzie jest błąd, przeanalizuj, debuguj. Jak debugujesz to najlepiej od tyłu. Czyli zacznij tam gdzie widzisz problem i podążaj do początku.
!*!
Pokaż jeszcze formularz i to jak sprawdzasz w modelu dane.
uncuncunc
  1. <form method="post" action="#">
  2. <label for="login">login:</label>
  3. <input type="text" name="login" id="login" value="" autofocus="autofocus" />
  4. <button type="submit" name="wyslij">ok</button>
  5. </form>


A model to dla testu nic innego jak sprawdzenie czy formularz został wysłany.

  1. if(isset($_POST['wyslij'])){return true;}else {return false;}
!*!
Cytat
data: "login=admin&password=test",


tu brakuje "wyslij", przesyłasz tylko post login i password, dlatego zwraca false. AJAX wysyła to co mu podasz, a nie to co znajduje się w formularzu.
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.