Allora, per prima cosa correggi il file JSON, è sintatticamente scritto male, ci sono delle virgole di troppo. Usa questo:
codice:
[
{
"isbn":"9788850326662",
"title":"C Pocket",
"author":"Enrico Amedeo",
"pubdate":"10/2007",
"pages":"240"
},
{
"isbn":"9788850326273",
"title":"UML Pocket",
"author":"Enrico Amedeo",
"pubdate":"4/2007",
"pages":"216"
},
{
"isbn":"9788850323913",
"title":"C# Pocket",
"author":"Enrico Amedeo,Giuseppe Marchi",
"pubdate":"11/2005",
"pages":"240"
}
]
Seconda cosa. Ti ho corretto la funzione, mi sono anche rinominato le variabili per raccapezzarmi, ma se vuoi puoi rimetterti i nomi di prima...
codice:
function scarica() {
var oReq = new XMLHttpRequest();
oReq.open("get", "books1.json", false);
oReq.send(null);
var aBooks = JSON.parse(oReq.responseText), sHTML = "<table width=\"100%\">";
for (var nItem = 0; nItem < aBooks.length; nItem++) {
sHTML += "<tr><td>" + aBooks[nItem].title + "</td>" +
"<td> (" + aBooks[nItem].isbn +")</td>" +
"<td>" + aBooks[nItem].pages + "pp</td></tr>";
}
sHTML += "</table>";
document.getElementById("books").innerHTML = sHTML;
}
Ultima cosa e anche la più importante. Se non hai motivi veri per usare ajax in modo SINCRONO (e non mi sembra tu ne abbia in questo caso), usalo in modo ASINCRONO. Ti correggo la funzione di conseguenza. Se puoi usa questa o qualcosa di simile.
codice:
function popolaTabella () {
var aBooks = JSON.parse(this.responseText), sHTML = "<table width=\"100%\">";
for (var nItem = 0; nItem < aBooks.length; nItem++) {
sHTML += "<tr><td>" + aBooks[nItem].title + "</td>" +
"<td> (" + aBooks[nItem].isbn +")</td>" +
"<td>" + aBooks[nItem].pages + "pp</td></tr>";
}
sHTML += "</table>";
document.getElementById("books").innerHTML = sHTML;
}
function scarica () {
var oReq = new XMLHttpRequest();
oReq.open("get", "books1.json", true);
oReq.onload = popolaTabella;
oReq.send(null);
}