Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][PHP] JSON problem z include
Forum PHP.pl > Forum > XML, AJAX > AJAX
Pavlosik
Witam,
Na początek może przedstawię kody plików:
plik index.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>JSON</title>
  5.  
  6. <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
  7. <script type="text/javascript" src="js/jquery.form.js"></script>
  8. <script type="text/javascript" src="js/scriptJQ.js"></script>
  9.  
  10. </head>
  11.  
  12.  
  13. <form id="formLogowanie" action="functions/loguj.php" method="post">
  14. E-mail: <input type="text" name="email_login" />
  15. Hasło: <input type="password" name="password_login" />
  16. <input id="btnLoguj" name="btnLoguj" type="submit" value="Loguj" />
  17. <label id="statusLogowania">>> info <<</label>
  18. </form>
  19. <div id="testowy"></div>
  20.  
  21. </body>
  22. </html>


plik scriptJQ.js
Kod
function processJson(data) {
        
    if(data.message == 'badl') {
        $('#statusLogowania').text("Błędny login i/lub hasło exclamation.gif!").show();
    }
    else if(data.message == 'ok') {
        $('#statusLogowania').text("Zostałeś zalogowany exclamation.gif!").show();
    }
}


$(document).ready(function() {
    $('#formLogowanie').ajaxForm({  
        dataType:  'json',
        success:   processJson
    });
});


plik loguj.php
  1. <?php
  2. function dbConnect() {
  3. //dołączenie pliku config.php
  4. //require_once('config.php');
  5. //nawiązanie połącznie z MySQL
  6. $connection = @mysql_connect (xxx, xxx, xxx) OR die ('Brak możliwości połącznie z MySQL: ' . mysql_error());
  7. //wybranie bazy danych
  8. @mysql_select_db (xxx) OR die ('Nie można wybrać bazy danych: ' . mysql_error());
  9. //kodowanie znaków
  10. @mysql_query("SET NAMES 'utf8'");
  11. return $connection;
  12. }
  13.  
  14. function checkPassword($login, $password) {
  15. dbConnect();
  16.  
  17. $query = "SELECT user_password FROM users WHERE user_email = '" . $login . "'";
  18. $result = @mysql_query($query);
  19.  
  20. if(!$result) {
  21. //echo = Problem z bazą danych danych. Zapytanie odrzucone.
  22. return false;
  23. }
  24.  
  25. $row = mysql_fetch_row($result);
  26.  
  27. if(!$row) {
  28. return false;
  29. }
  30.  
  31. if($row[0] != md5($password)) {
  32. return false;
  33. }
  34. else {
  35. return true;
  36. }
  37. }
  38.  
  39.  
  40. if(!checkPassword($_POST['email_login'], $_POST['password_login'])) {
  41. $return = 'badl';
  42. }
  43. else {
  44. $return = 'ok';
  45. }
  46.  
  47. echo '{ "message": "' . $return . '" }';
  48.  
  49. ?>


Mam pewien problem natury kosmetycznej w zasadzie. Otóż napisałem przykładowy mały formularz logujący użytkownika. Ogólnie działa wszystko tak jak powinno, czyli użytkownik loguję się w locie, skrypt wychwyca błędne hasło itd.
Teraz chcąc uporządkować trochę kod pliku loguj.php, wywalam wszystkie funkcje (czyli dwie na razie:D) do osobnego pliku i oczywiście później dołączam go do loguj.php. Niestety po wykonaniu takich czynności wszystko się sypie i po klikaniu w button Loguj w zasadzie nic się nie dzieje tak jakby skrypt wcale nie działał. Jakiekolwiek wywołanie funkcji (wywołanie w loguj.php), która znajduję się w oddzielnym pliku powoduje, że wszystko przestaje działać. Czy ktoś się orientuje może o co chodzi?
krowal
A czy w loguj.php includujesz poprawnie te pliki z wywoływanymi funkcjami ? Na początku loguj.php daj sobie error_reporting(E_ALL); i zobacz co Ci zwraca wywołanie tego bezpośrednio w przeglądarce albo podejrzyj co zwraca ci wywołanie ajaxowe tego skryptu.
Pavlosik
Sprawdziłem. A więc żadne błędy się nie pojawiają. Co więcej skrypt z ajax wygląda, że też się poprawnie wykonuje (firebug) nie wywala błędów, a odpowiedzi dostajemy { "message": "badl" } (w przypadku złego loginu bądź hasła) czyli dokładnie to co ma zostać zwrócone. Reasumując skrypt działa właściwie poprawnie, pytanie zatem dlaczego w znaczniku <label> nie wyświetla się odpowiedni tekst po wykonaniu logowania?
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.