2013-12-18 8 views
7

Ich verstehe nicht, was schief gelaufen ist, wenn Datei-Analyse:Syntaxerror: JSON Parse error: Unerwartete Kennung "Objekt" (anonyme Funktion)

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

JavaScript-Code:

<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"); 
     } 
    }); 
} 

I Fehlermeldung an:

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

console.log (Antwort); ? –

+1

Sie brauchen nicht zu analysieren – anand4tech

+0

Vielen Dank, Problem wurde gelöst – aspire89

Antwort

20

wahrscheinlich Ihre response ist bereits ein JavaScript-Objekt, und es nicht b erforderlich e geparst.

Entfernen Sie die Zeile var json = JSON.parse(response); und Ihr Code sollte funktionieren.

+0

Wenn der Mime-Typ korrekt gesendet wird, ist das sicher. –

+0

@dystyroy Ich habe nur gehofft, dass der Server-Administrator nicht so dumm ist, den MIME für '.json' Dateien' zu ändern:) ' – VisioN

+0

Dann überprüfe, ob es ein Objekt ist oder benutze $ .ajax und sage ihm, was es bedeutet zu sein .... – epascarello

5

Nach dem jQuery docs auf $.ajax (das ist, was $.get intern verwendet):

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...)

Somit ist Ihre Antwort wahrscheinlich bereits ein Objekt. Wenn Sie JSON.parse(response) tun, tun Sie wirklich

JSON.parse("[object Object]") 

weil JSON.parse coerces its argument to a string und Nur Objekte standardmäßig stringify zu [object Object]. Die ursprüngliche [ führt JSON.parse, um ein Array zu erwarten, aber es drosselt dann auf dem Token object, die nicht die JSON-Grammatik passt.

Entfernen Sie die Zeile JSON.parse, weil response bereits von jQuery in ein Objekt geparst wurde.

Verwandte Themen