2013-12-18 36 views
7

ja nie rozumiem, co poszło nie tak podczas analizowania pliku:SyntaxError: JSON Parse error: Nieoczekiwany identyfikator "obiekt" (funkcja anonimowa)

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

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

otrzymuję błąd:

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

console.log (odpowiedź); ? –

+1

Nie musisz parsować – anand4tech

+0

Dziękuję wszystkim, problem został rozwiązany. – aspire89

Odpowiedz

20

Najprawdopodobniej Twój response jest już obiektem JavaScript i nie jest wymagany do b Parsowaliśmy.

Usuń linię var json = JSON.parse(response);, a Twój kod powinien zadziałać.

+0

Jeśli typ MIME jest poprawnie wysłany, to na pewno. –

+0

@dystroy Miałem tylko nadzieję, że administrator serwera nie jest głupi, aby zmienić MIME dla '.json' plików':) ' – VisioN

+0

Niż sprawdź, czy jest to obiekt lub użyj $ .ajax i powiedz, co to jest być .... – epascarello

5

Zgodnie z docs jQuery na $.ajax (czego $.get używa wewnętrznie):

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

Zatem twoja odpowiedź jest prawdopodobnie już obiekt. Kiedy robisz JSON.parse(response), jesteś naprawdę robi

JSON.parse("[object Object]") 

ponieważ JSON.parse coerces its argument to a string i zwykłe obiekty domyślnie stringify do [object Object]. Początkowa wersja [ prowadzi do uzyskania tablicy, a następnie dławi się ją na tokenie object, która nie pasuje do gramatyki JSON.

Usuń linię JSON.parse, ponieważ response jest już sparsowana do obiektu przez jQuery.

Powiązane problemy