2013-12-18 14 views
7

Non capisco cosa sia andato storto durante l'analisi di file:SyntaxError: JSON Errore di analisi: imprevisto identificatore "oggetto" (funzione anonima)

{ "t": -9.30, "p": 728.11, "h": 87.10 } 

codice javascript:

<script type="text/javascript"> 
function check() { 
    $.get("http://....file.json", function(response, status, xhr) { 
     if (status == "success") { 
      var json = JSON.parse(response); 
      $("#temp").html(json.t + "&deg;"); 
      $("#pressure").html(json.p + " mm hg"); 
     } 
     if (status == "error") { 
      $("#temp").html("error"); 
     } 
    }); 
} 

ricevo errore:

SyntaxError: JSON Parse error: Unexpected identifier "object" 
+0

console.log (risposta); ? –

+1

non è necessario analizzare – anand4tech

+0

Grazie a tutti, il problema è stato risolto – aspire89

risposta

20

Molto probabilmente il vostro response è già un oggetto JavaScript e non richiesto a b e analizzato.

Rimuovere la riga var json = JSON.parse(response); e il codice dovrebbe funzionare.

+0

Se il tipo mime è stato inviato correttamente, questo è sicuro. –

+0

@dystroy Speravo solo che l'amministratore del server non fosse così stupido da cambiare il MIME per i file '.json'::' – VisioN

+0

Che fare un controllo se si tratta di un oggetto o usare $ .ajax e dirgli cosa si suppone essere .... – epascarello

5

Secondo la documentazione jQuery su $.ajax (che è ciò $.get utilizza internamente):

dataType: ...If none is specified, jQuery will try to infer it based on the MIME type of the response (an XML MIME type will yield XML, in 1.4 JSON will yield a JavaScript object...)

Così, la risposta è probabilmente già un oggetto. Quando si esegue JSON.parse(response), stai davvero facendo

JSON.parse("[object Object]") 

perché JSON.parse coerces its argument to a string, e gli oggetti semplici di default stringa i per [object Object]. L'iniziale [ porta JSON.parse ad aspettarsi un array, ma poi soffoca sul token object, che non si adatta alla grammatica JSON.

Rimuovere la riga JSON.parse, perché response è già analizzata in un oggetto da jQuery.

Problemi correlati