jQuery: AJAX e i valori di sessione PHP

jQuery: AJAX e i valori di sessione PHP

AJAX può essere usato per molti scopi. Una transazione normalmente passa dei parametri che verranno poi elaborati dal server. Immaginiamo di dover impostare tramite AJAX e PHP un valore per l'array superglobale $_SESSION. Quando lanciamo la richiesta, il parametro passato viene usato per creare una voce in tale array. Ma dato che non avviene il refresh della pagina, il nuovo valore non è disponibile al termine della richiesta. Vediamo come ovviare al problema utilizzando jQuery.

Un utente seleziona un checkbox avente un dato valore. Possiamo passare a PHP tale valore nel seguente modo:


$.ajax({
	url: 'ajax.php',
	type: 'POST',
	dataType: 'html',
	data: 'param=' + $('#check').val(),
	success: function() {
	
		//...
	
	}
});

Senza entrare in dettagli troppo elaborati, PHP crea la seguente voce:


$param = $_POST['param'];

if($param == 'yes' || $param == 'no') {
	$_SESSION['choice'] = $param;
}

Ora l'array $_SESSION contiene la voce choice impostata sul valore passato tramite AJAX. A questo punto, tuttavia, il valore non è ancora disponibile sulla pagina in quanto non è avvenuto il refresh. Dobbiamo quindi forzare il refresh:


$.ajax({
	url: 'ajax.php',
	type: 'POST',
	dataType: 'html',
	data: 'param=' + $('#check').val(),
	success: function() {
	
		var loc = location.href;
		window.location = loc;
	
	}
});

Il caso dei valori di sessione è l'unico caso in cui è necessario deviare dalla norma che prevede che non si effettui mai un refresh della pagina tramite AJAX. Può sembrare una contraddizione, ma PHP ha bisogno che lo script corrente venga richiamato per inserire i nuovi dati di sessione nella pagina corrente.

Torna su