JSON… e quella virgola di troppo

Da tanto tempo si è affermato ormai JSON come formato per la trasmissione di dati perchè ritenuto più performante di XML.

Ormai quasi tutti i servizi Web 2.0 rispondono a delle richieste con dei buffer in formato JSON. Grazie al massivo uso di AJAX dell’oggetto XMLHttpRequest incentivato dall’adozione dei diversi framework di sviluppo JavaScript, JSON è diventato un formato di interscambio anche da e verso linguaggi che non ne hanno avuto necessità fino ad oggi (Si veda sul sito http://json.org le librerie prodotte per i vari linguaggi di programmazione).

Utilizzando JSON spesso si incorre in un comportamento diverso tra i vari browser.

Non si comportano diversamente nel trattare un oggetto, un array o una stringa, ma si comportano diversamente in uno specifico caso… Quale?

Prendiamo il JSON che segue:

var myJSONObject = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3',
};
alert(myJSONObject.key1);

Provando ad includere il codice sopra citato in una pagina HTML in alcuni browser il risultato è un messaggio di alert con il che riporta il testo “value1”. Internet Explorer Altri browser invece danno un errore sulla riga precedente all’alert.

Il problema come descrive già il titolo di questo articolo è nella virgola successiva al valore della key3.

Secondo la mia interpretazione (ma potrei sbagliarmi, so di non sapere  :-) ) è giusto che non dia errore in quanto la virgola è inteso come separatore di valori e potrei avere (o volere) un ultimo elemento vuoto nell’oggetto.

Io non ho trovato risposta a questo dilemma, neanche le RFC fanno riferimento a questo caso “anomalo”. Chi è che si comporta bene secondo voi?

Tutti per uno… XMLHttpRequest per tutti!

Introduzione

Ho deciso di scrivere questo tutorial perché negli ultimi tempi ho trovato molta confusione nell’utilizzo di sigle e definizioni. Relative all’oggetto XMLHttpRequest o addirittura all’idea di cosa sia AJAX.

Durante la lettura di questo articolo potrebbe essere propedeutica la consultazione contestuale degli script allegati.

Ci sono persone che interpretano AJAX semplicisticamente come il rendere dinamico (pieni di effetti) un sito di base statico, altre persone invece attribuiscono il termine ajax indiscriminatamente per qualsiasi tipo di operazione client/server. In effetti credo che il nome più opportuno per richieste client/server basate su script è XMLHttpRequest. Esso poi viene utilizzato per adempiere alle mansioni previste dai vari acronimi.

Significato degli acronimi

Il primo acronimo che credo aver sentito è stato proprio AJAX (forse perché è quello che si è diffuso con maggior velocità rispetto agli altri. Questo acronimo sta per Asynchronous Javascript And Xml ovvero nato con lo scopo di trattare richieste tramite javascript da e verso un server con notazione XML in modalità asincrona . Per eseguire questa funzione bisogna avvalersi dell’oggetto XMLHttpRequest.

Il secondo acronimo di cui mi ricordo essermi imbattuto è stato AJAJ che sta per Asyncrhonous Javascript and JSON. Uhm… un altro acronimo è saltato fuori. Il metodo migliore per descriverlo è riferendosi alla fonte ufficiale: http://www.json.org. Questo sistema appunto prevede che non ci sia un XML come risposta server ma una struttura nella notazione JSON (JavaScript Object Notation). Anche in questo caso per funzionare c’è bisogno dell’oggetto XMLHttpRequest.

Altro Acronimo in cui mi sono imbattuto: AHAH. Inizialmente l’avevo considerato una battuta… ma documentandomi ho riscontrato che effettivamente è un acronimo e sta per: Asynchronous Html And Http. Anch’esso si basa sull’XMLHttpRequest. Per evitare di dire cose errate o parziali suggerisco di consultare la fonte originale AHAH, Asynchronous Html And Http.

Facendo una ricerca su internet ho notato che l’acronimo AJAS è stato utilizzato su un articolo di Steve Karam “Putting the Express Back Into Oracle Application Express with AJAX“.

Ammaliato da tutti questi acronimi, ho deciso di inventarne uno anche io: AJAT ho fatto una ricerca su internet e non sono riuscito ad attribuirne la paternità per cui me la auto-attribuisco ma se tale acronimo fosse già stati menzionato da altri sarò ben lieto di segnalare i loro nomi come ideatori del termine.

AJAT significa: Asyncronous Javascript And Text mentre AJAS significa: Asynchronous Javascript And javaScript. Il primo prevede che il risultato dell’elaborazione server sia un Testo semplice non formattato secondo i tags dell’XHTML, l’altro invece prevede che in outuput sia ritornato uno Script Javascript da eseguire. Entrambi comunque fanno uso dell’oggetto XMLHttpRequest.

Una sintesi chiarificatoria

Sintetizzando, i cinque acronimi precedentemente utilizzati fanno tutti uso di una stessa metodologia di approccio al problema: è richiesto l’utilizzo di un oggetto XMLHttpRequest e la necessità di essere delle richieste Asicrnone.

Ma perché vengono introdotte queste nuove metodologie? Non basta fare il refresh di una pagina? La risposta è “Ni” ovvero l’idea sarebbe quella di caricare solo parte di una pagina attualmente visualizzata, se il browser del client lo consente, in alternativa provvedere a fare il caricamento di tutta la pagina. Almeno la filosofia che ne ho tratto è quella appena indicata.

Contesti d’uso

Con i presupposti che ad ora abbiamo definito, ciascuna metodologia è adeguata per un determinato problema.

Se per ipotesi volessimo gestire quindi una risposta di tipo XML la metodologia utilizzata prenderebbe il nome di AJAX. In alternativa assumerebbe uno degli acronimi precedentemente specificati. AJAJ per risposte in JSON, AHAH rimando alla fonte originale, AJAS per ottenere script javascript, AJAT per trattare risposte di tipo testo non formattato.

%d blogger hanno fatto clic su Mi Piace per questo: