In questo articolo vedremo come aggiungere dei valori alla sessione di PHP tramite jQuery.
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'];
$values = ['yes', 'no'];
if(in_array($param, $values)) {
$_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() {
window.location = location.href;
}
});
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.