Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX]Odswieżanie po dodaniu rekordu.
Forum PHP.pl > Forum > Przedszkole
Salur
Witam, przesyłam dane przez ajax z jednego pliku do drugiego, problem w tym że plik którym dodaje rekord jest odpowiedzialny jedynie za dodanie. W efekcie koncowym chcę aby po nadaniu sesji strona sie przeładowała. Problem w tym ze gdy ustawie header("Location: xxxx"); to przeladowuje tylko ten plik którym dodaje rekord a nie całą stronę. Próbowałem roznież poprzez: .done( zmienna ){ location.reload(); } lecz nic z tego bo to przeladowuje bez uwzglednienia czy dodano rekord czy nie.
Pyton_000
zwracaj w skrypcie coś jeśli się doda rekord, i w Ajax sprawdzaj czy coś === coś i wtedy refresh
Salur
Hmm, okej, tylko teraz pytanie jak spowrotem prześlę zmienną z pliku php do funkcji ajax??

Czy muszę znowu poprzez ajax wysyłać zmienna przez post do pliku .js?
Pyton_000
robisz normalnie echo, a potem w np. .done(data) {console.log(data)}
Salur
Hmm, chyba Cię źle zrozumiałem, o to chodziło? Bo nie działa.

php:

  1. // dadanie sesjii
  2. echo 'dostep';


AJAX:
  1. .done(function( data ) {
  2.  
  3. if(data === 'dostep'){
  4.  
  5. location.href = "xxx";
  6.  
  7. }
  8.  
  9. });


W czym problem?
trueblue
Po echo powinno być exit.

Ustawiałeś jakiś dataType dla żądania ajaxowego?
Salur
Hm, nie ustawiłem, jaki typ żądania powinien być w moim przypadku?
trueblue
Jeśli nie ustawiałeś to ok.

Sprawdź w konsoli jaką odpowiedź zwraca skrypt php.
Salur
Zwraca wartość 'dostep'
trueblue
A teraz tak:
  1. .done(function( data ) {
  2. console.log(data);
  3. if(data === 'dostep'){
  4. location.href = "xxx";
  5. }
  6. });

i co jest w konsoli?
Salur
Wywaliło dwa razy dostep i nie przekierowało.

trueblue
A teraz:
  1. done(function( data ) {
  2. if(data === 'dostep'){
  3. console.log('jestem tu');
  4. location.href = "xxx";
  5. }
  6. });
Salur
Teraz zwróciło tylko raz 'dostep'.
trueblue
Wcześniej również raz zwróciło.
Natomiast dodatkowo był druk w konsoli.
Teraz powinno drukować 'jestem tu'.
Salur
W tym problem że nie drukuje. Co może być nie tak?

Oto cała funkcja:

  1. function zaloguj() {
  2.  
  3. var Login = $("[name=Login]").val();
  4. var Password = $("[name=Password]").val();
  5.  
  6. $.ajax({
  7.  
  8. method: "POST",
  9.  
  10. url: "pages/login.php",
  11.  
  12. data: { 'Login': Login, 'Password': Password},
  13.  
  14. })
  15. .done(function( data ) {
  16.  
  17. if(data === 'dostep'){
  18.  
  19. console.log('jestem tu');
  20.  
  21. location.href = "link";
  22. }
  23. });
  24. }
trueblue
Sprawdź czy nie drukujesz w php jakichś znaków przed lub po.
Ustaw kodowanie pliku na UTF-8 bez BOM.
echo ma się kończyć exit.
Salur
Wszystko jest okej w kodzie.

PHP:

  1. $_SESSION['user'] = $user['id'];
  2. echo 'dostep'; exit;


W obu plikach jest kodowanie uff8 bez bom. W pliku php nie ma innych echo.
trueblue
Brak innego echo o niczym nie świadczy. Być może jest jakiś biały znak przed tekstem.
Salur
Oto cały plik php:

  1. <?php
  2.  
  3. if(!empty($_POST) && !empty($_POST['Login']) && !empty($_POST['Password'])) {
  4.  
  5. $login = parseString($_POST['Login']);
  6. $pass = htmlspecialchars(trim(stripslashes($_POST['Password'])));
  7.  
  8. $user = $db->select_single("SELECT * FROM account.account WHERE login = '".$login."' AND password = PASSWORD('".$pass."') LIMIT 1");
  9.  
  10.  
  11. if(!empty($user)){
  12.  
  13. if($user['status'] == 'BLOCKED'){
  14.  
  15. $blad = 'Twoje konto jest zbanowane.';
  16.  
  17. } else {
  18.  
  19. $_SESSION['user'] = $user['id'];
  20.  
  21. echo 'dostep'; exit;
  22.  
  23. }
  24.  
  25. } else {
  26.  
  27. $blad = 'Podałeś złe dane do logowania.';
  28.  
  29. }
  30.  
  31. }
  32. ?>
trueblue
Sprawdź z takim plikiem php:
  1. <?php
  2. echo 'dostep';
  3. exit();
  4. ?>
Salur
Kurczę, z takim plikiem działa sad.gif gdzies musi być błąd.

Nie mam pojęcia sprawdziłem dokładnie plik i nigdzie nie ma spacji ani innego znaku.

No niestety nie mam pojęcia, jak moge to zrobić w inny sposób?
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.