
In ufficio, stiamo lavorando ad una applicazione web che esegue una ricerca su un vasto campi di input che filtrano la ricerca. Una volta inviato il form, l’applicazione (nello specifico, una funzione in PHP), restituisce un risultato in JSON.
Per ordinare il risultato via front-end, si è deciso di prendere una proprietà numerica da un oggetto, e quindi ordinare facendo confronti a due su questi valori. Il JSON che ne è venuto fuori è qualcosa del genere:
[{
"proprieta": dati1,
"ordine": 1
},
{
"proprieta": dati,
"ordine": 8
},
{
"proprieta": dasa,
"ordine": 2
}]
Dunque, l’obiettivo è farsi restituire tutti questi dati e manipolarli in modo che vengano ordinati per ‘ordine’ crescente. Poiché l’ordinamento deve avvenire solo e soltanto quando PHP ci ritorna il JSON, si rivela particolarmente utile il $.ajax di jQuery:
(function ($) {
$('#selettore').on('click', function () {
$.ajax({
url: 'url/script.php', // indirizzo dello script in PHP
data: null, // Non passiamo nulla
dataType: 'json', // Esplicito il tipo di dato di ritorno
type: 'GET',
success: function (data) {
// Ordiniamo i dati restituiti con la classica funzione di ordinamento
var ord = data.sort(function (n1, n2) {
if (n1.ordine > n2.ordine) {
return 1;
}
if (n1.ordine < n2.ordine) {
return -1;
}
return 0;
});
// Assegnamo la stringa che conterra' tutto l'insieme
var string = '';
// Concateniamo a string il tutto
ord.each(function (index, val) {
string += ', ' + val.ordine;
});
// Mostriamo il risultato nel tag con id 'risultato'
$('#risultato').text(string); // 1, 2, 8
},
error: function (xhr, status, text) {
console.log(status + ' ' + text);
}
});
});
})(jQuery);
Per attuare questa semplice e indolore tecnica, è necessario che lo script lato server sia progettato per restituire un array di oggetti, piuttosto che di un elenco di oggetti.




