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