jQuery.parseJSON - Chrome und Safari analysieren automatisch JSON

8

Die folgende Funktion führt dazu, dass die Antwortvariable in Chrome und Safari null ist, aber nicht in Firefox.

%Vor%

Fehler:

%Vor%

Dies liegt daran, dass die Eingabe von jQuery.parseJSON () alles außer einer JSON Zeichenfolge null zurückgibt. Es scheint, dass Chrome und Safari JSON automatisch analysieren, ohne explizit dazu aufgefordert zu werden. Wenn ich das Argument "response" teste, bevor ich versuche, es mit jQuery zu analysieren, ist es bereits ein JSON-Objekt in Chrome und Safari. In Firefox ist es jedoch immer noch eine Zeichenfolge.

Die einzige Lösung, mit der ich dies in den verschiedenen Browsern handhaben kann, ist festzustellen, ob "Antwort" bereits geparst wurde, indem ich den Konstruktor überprüfe:

%Vor%

Fehle ich etwas oder ist dies der einzige Weg, um dies derzeit zu bewältigen? Scheint so, als würde jQuery.parseJSON den User-Agent erkennen und das Argument im Fall von Chrome / Safari einfach so zurückgeben wie bisher.

Relevante Informationen

  • Das ist jQuery 1.6.1
  • Die Antwort Content-Type vom Server lautet application / json
  • Das Antwortargument stammt von Ihrem standardmäßigen jQuery AJAX-Aufruf:
%Vor%     
Chris Cummings 21.06.2011, 05:39
quelle

1 Antwort

15

Es ist nicht Chrome oder Safari, es ist jQuery, das die Analyse durchführt, wenn es die entsprechende Content-Type in der Antwort sieht. (Update: Und das Content-Type , das du zu der Frage hinzugefügt hast, ist korrekt.) Ich kann nicht sofort sehen, warum es das in Firefox nicht tun würde.

Sie können erzwingen, dass das Parsen immer durchgeführt wird, indem Sie dataType: 'json' zu Ihrem Aufruf hinzufügen, Details in jQuery.ajax docs . Dann würden Sie parseJSON überhaupt nicht aufrufen, response wäre bereits das deserialisierte Objekt.

    
T.J. Crowder 21.06.2011, 05:43
quelle

Tags und Links