xmlhttpresponse - POST i zmienne niewidoczne w skrypcie PHP

0

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

0

POST jest specyficznym rodzajem zapytania, który ma kilka formatów. Jeżeli nie podasz w jakim formacie podajesz te dane - serwer ich nie odbierze.
Dla Twojego formatu danych potrzebujesz dopisać przed log.send to:

log.setRequestHeader("Content-type","application/x-www-form-urlencoded");
0

To trochę dziwne, bo wcześniej dodawałem tą linijkę i nic z tego nie wychodziło.
Ale mozliwe, że dawałem to przed log.open.
W każdym razie, podane rozwiązanie pomogło.

Dziękuję serdecznie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1