Salur
30.08.2015, 10:51:35
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
30.08.2015, 10:54:30
zwracaj w skrypcie coś jeśli się doda rekord, i w Ajax sprawdzaj czy coś === coś i wtedy refresh
Salur
30.08.2015, 13:25:42
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
30.08.2015, 16:03:46
robisz normalnie echo, a potem w np. .done(data) {console.log(data)}
Salur
1.09.2015, 17:34:05
Hmm, chyba Cię źle zrozumiałem, o to chodziło? Bo nie działa.
php:
// dadanie sesjii
AJAX:
.done(function( data ) {
if(data === 'dostep'){
location.href = "xxx";
}
});
W czym problem?
trueblue
1.09.2015, 17:41:45
Po echo powinno być exit.
Ustawiałeś jakiś dataType dla żądania ajaxowego?
Salur
1.09.2015, 17:44:56
Hm, nie ustawiłem, jaki typ żądania powinien być w moim przypadku?
trueblue
1.09.2015, 17:50:30
Jeśli nie ustawiałeś to ok.
Sprawdź w konsoli jaką odpowiedź zwraca skrypt php.
Salur
1.09.2015, 17:52:37
Zwraca wartość 'dostep'
trueblue
1.09.2015, 17:55:27
A teraz tak:
.done(function( data ) {
console.log(data);
if(data === 'dostep'){
location.href = "xxx";
}
});
i co jest w konsoli?
Salur
1.09.2015, 18:08:01
Wywaliło dwa razy dostep i nie przekierowało.
trueblue
1.09.2015, 18:21:23
A teraz:
done(function( data ) {
if(data === 'dostep'){
console.log('jestem tu');
location.href = "xxx";
}
});
Salur
1.09.2015, 18:24:20
Teraz zwróciło tylko raz 'dostep'.
trueblue
1.09.2015, 18:27:16
Wcześniej również raz zwróciło.
Natomiast dodatkowo był druk w konsoli.
Teraz powinno drukować 'jestem tu'.
Salur
1.09.2015, 18:55:07
W tym problem że nie drukuje. Co może być nie tak?
Oto cała funkcja:
function zaloguj() {
var Login = $("[name=Login]").val();
var Password = $("[name=Password]").val();
$.ajax({
method: "POST",
url: "pages/login.php",
data: { 'Login': Login, 'Password': Password},
})
.done(function( data ) {
if(data === 'dostep'){
console.log('jestem tu');
location.href = "link";
}
});
}
trueblue
1.09.2015, 19:04:49
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
1.09.2015, 19:13:31
Wszystko jest okej w kodzie.
PHP:
$_SESSION['user'] = $user['id'];
W obu plikach jest kodowanie uff8 bez bom. W pliku php nie ma innych echo.
trueblue
1.09.2015, 19:30:12
Brak innego echo o niczym nie świadczy. Być może jest jakiś biały znak przed tekstem.
Salur
1.09.2015, 19:42:48
Oto cały plik php:
<?php
if(!empty($_POST) && !empty($_POST['Login']) && !empty($_POST['Password'])) {
$login = parseString($_POST['Login']);
$user = $db->select_single("SELECT * FROM account.account WHERE login = '".$login."' AND password = PASSWORD('".$pass."') LIMIT 1");
if($user['status'] == 'BLOCKED'){
$blad = 'Twoje konto jest zbanowane.';
} else {
$_SESSION['user'] = $user['id'];
}
} else {
$blad = 'Podałeś złe dane do logowania.';
}
}
?>
trueblue
1.09.2015, 20:06:44
Sprawdź z takim plikiem php:
<?php
?>
Salur
2.09.2015, 15:10:46
Kurczę, z takim plikiem działa

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.