Uno dei formati più flessibile per la comunicazione javascript client - server è la così detta javascript object notation.
Si tratta di un modo di strutturare le informazione non diverso da xml, ma più snello.
Questo è ciò che è contenuto in un file JSON per es.
[
{
"term": "BACCHUS",
"part": "n.",
"definition": "A convenient deity invented by the ancients as an
excuse for getting drunk.",
"quote": [
"Is public worship, then, a sin,",
"That for devotions paid to Bacchus",
"The lictors dare to run us in,",
"And resolutely thump and whack us?"
],
"author": "Jorace"
},
{
"term": "BACKBITE",
"part": "v.t.",
"definition": "To speak of a man as you find him when he can't
find you."
},
{
"term": "BEARD",
"part": "n.",
"definition": "The hair that is commonly cut off by those who
justly execrate the absurd Chinese custom of shaving the head."
},
Si tratta di una notazione ad array [] ed oggetti {} che va a formare delle strutture dati.
Diversamente da caricare html, queste strutture hanno la necessità di essere parsate e gestite al fine di ottenere un html da inserire all'interno della nostra pagina:
JAVASCRIPT CODE:
$(document).ready(function() {
$('#letter-b .button').click(function() {
$.getJSON('b.json', function(data) {
$('#dictionary').empty();
$.each(data, function(entryIndex, entry) {
var html = '<div class="entry">';
html += '<h3 class="term">' + entry['term'] + '</h3>';
html += '<div class="part">' + entry['part'] + '</div>';
html += '<div class="definition">';
html += entry['definition'];
if (entry['quote']) {
html += '<div class="quote">';
$.each(entry['quote'], function(lineIndex, line) {
html += '<div class="quote-line">' + line + '</div>';
});
if (entry['author']) {
html += '<div class="quote-author">' + entry['author'] + '</div>';
}
html += '</div>';
}
html += '</div>';
html += '</div>';
$('#dictionary').append(html);
});
});
});
});
Analizziamo il codice: