Hejka,
Zastanawiam się dlaczego, po wysłaniu żądania przez xmlhttpresponse metodą post, PHP nie widzi zmiennych.
Plik login.php
<form action=login.php method='post'>
<input type='text' name='login' value='Wprowadz swoj login' onfocus='czysc("text")' onblur='daj("text")' /><br />
<input type='text' name='pass' value='Wprowadz swoje haslo' onfocus='czysc("pass")' onblur='daj("pass")' /><br />
<a onmousedown='checkForm()'>Zaloguj się</a></form>
- Poniższe funkcje są zadeklarowane lokalnie, czyli w miejscu powyższych. Zostało to rozdzielone w celu poprawy widoczności kodu
Funkcja czysc(text):
if (this.value == this.defaultValue) this.value = '';
Fukcja czysc(pass):
if (this.value == this.defaultValue) {
this.value = '';
this.type = 'password';
}
Funkcja daj (text):
if (this.value == '') this.value = this.defaultValue;
Funkcja daj (pass):
if (this.value == '')
{
this.value = this.defaultValue;
this.type = 'text';
}
Powyższe funkcje działają dobrze. Problem jest chyba gdzieś poniżej, ale na wszelki wypadek dałem też powyższe
checkForm:
var login = document.getElementsByTagName('input')[0];
var pass = document.getElementsByTagName('input')[1];
if (login.value == login.defaultValue) alert('Pole Login nie moze byc puste');
if (pass.value == pass.defaultValue) alert('Haslo nie moze byc puste');
else {
var log = new XMLHttpRequest();
log.open('POST', 'login_api.php', false); // chcę czekać na odpowiedź z serwera, gdyż powinna być niemal natychmiast, a w tym czasie nie chciałbym aktywacji innych funkcji JS
log.send('login=' + login.value + '&pass=' + pass.value);
var respC = log.status;
var resp = log.responseText;
alert(respC);
}
Problem w tym, że $_POST['login'] i $_POST['pass'] nie są widoczne w PHP.
Sprawdziłem w konsoli Firefoxa i zdaje się, że wszystko działa
Sieć -> Parametry -> Zapełnienie żądania:
login=ads&pass=zxc