2013-08-17 14 views
15

Ho il seguente documento JSONjQuery getJSON errore di sintassi in un JSON valida

// json.json 
[ 
    { 
     "title":"title1", 
     "value":12234 
    }, 
    { 
     "title":"title2", 
     "value":"some text" 
    }, 
    { 
     "title":"title3", 
     "value":"12qwerty234" 
    }, 
    { 
     "title":"title4", 
     "value":123.5 
    } 
] 

Sto usando jQuery per caricarlo. Ecco il codice:

$(document).ready(function(){ 
    $.getJSON("json.json", {},function(result){ 
     $.each(result, function(i, obj) { 
      $("form").append($('<label for="'+i+'">'+obj.title+'</label>')); 
      $("form").append($('<input id="'+i+'" value="'+obj.value+'" type="text"/><br>')); 
     }); 
    }); 
}); 

Il mio problema è che sto ottenendo un errore di sintassi in Firefox. Carico json.json come file locale. Ecco uno screenshot (l'errore dice "Errore di sintassi alla linea 1")

enter image description here

nota, che la forma è stato generato con successo.

Edit: Ecco un'altra immagine da Chrome durante l'esecuzione di python SimpleHTTPServer:

enter image description here

+1

E cosa dice l'errore? – adeneo

+1

Niente, punta solo alla prima riga del file json. –

+0

Ho appena provato su Firefox (23.0.1) e funziona perfettamente per me. Il tuo file JSON potrebbe contenere un personaggio invisibile? Prova a ricreare il file JSON copiando e incollando il JSON dal tuo post. – AlliterativeAlice

risposta

20

Il motivo è che si sta utilizzando un file locale, quindi è implicito un tipo mime di "text/xml" e quindi Firefox proverà ad analizzarlo come XML nello .responseXML dell'oggetto XHR sottostante. Questo naturalmente fallisce.

Si può solo ignorare questo, o specificare il mimeType da soli:

$.ajax({ 
    dataType: "json", 
    url: "json.json", 
    mimeType: "application/json", 
    success: function(result){ 
     $.each(result, function(i, obj) { 
      $("form").append($('<label for="'+i+'">'+obj.title+'</label>')); 
      $("form").append($('<input id="'+i+'" value="'+obj.value+'" type="text"/><br>')); 
     }); 
    } 
}); 

PS: Usando XHR pianura si usa overrideMimeType()

0

credo, errore prodotto a causa di file di JSON è un file locale. Prova a caricare con il tuo server web, come nginx o apache.

2

ho eseguito lo stesso codice su un server web e non viene generato alcun errore di sintassi . Mentre genera un errore di sintassi quando caricato da file: ///. Quindi, è fondamentalmente lo "schema".

+0

Bene, ho provato a eseguire 'python -m SimpleHTTerver' dalla mia directory, ma non ha funzionato. Doveva essere? –

+0

Sì, doveva funzionare correttamente. L'ho provato alla mia fine con Python versione 2.7.3 e ha funzionato senza errori. – aadel

Problemi correlati