JSON.parse Fehlschlägt, in Safari, wenn Sie einen string-Wert ein Komma enthält

Baue ich einen Einkaufswagen, die, wenn ein "Kaufen" - button gedrückt wird, wird ein web-service liefert einen JSON-Ausgabe, die ich dann speichern Sie Sie in eine Javascript-cookie als string.

Eine typische Rückkehr aus dem web-Dienst werden könnte:

{
   "d":{
      "58658":{
         "id":"58658",
         "qty":"1",
         "singlePrice":"754",
         "salePrice":"754",
         "isBulk":"0",
         "isSor":"0",
         "vatRate":"20.00",
         "masterCat":"6",
         "imgUrl":"http://...img url",
         "singleWeight":"18000",
         "totalAvailableStock":"2",
         "thirdPartyStock":"",
         "item":"Electrovoice Live X Elx115p, Each " //<< HERE IS THE ISSUE
      }       
   }
}

Wenn die Rückkehr sieht aus wie die oben, wird es nicht in Safari NUR

Haben viel Zeit damit verbracht, zu versuchen, finden Sie einige nützliche Mechanismus zu Debuggen, ohne den Kauf ein Mac, ich habe schließlich verfolgt es auf:

"item":"Electrovoice Live X Elx115p, Each " //<< HERE IS THE ISSUE - The comma

Den item Wert hat, ein Komma in der Zeichenfolge, ich meine den return Wert in ein cookie mit etwas wie:

cookies.set('shopping_cart', JSON.stringify(result)); //(where result is the JSON above)

Wenn ich versuche, rufen Sie es später:

var shopping_cart = cookies.get('shopping_cart');
shopping_cart = JSON.parse(shopping_cart);

Es funktioniert in JEDEM browser, auch, anscheinend, Internet Explorer... AUßER Safari

Ich habe keinen Mac also nicht sicher, ob Safari auf dem Mac ist anders, aber sicherlich die Windows-version hat diesen Fehler, und so ist es nicht auf meinem iPhone und iPad.

Der Fehler ist:

JSON parse error, unterminated string.

Wie gesagt, dies zu sein scheinen, ein Problem nur in Safari, habe Schwierigkeiten, die Suche nach einer Lösung, obwohl.

Hilfe viel geschätzt!

EDIT:

Habe ich eine Fiddle: http://jsfiddle.net/jhartnoll/2GLEz/
Diese Geige repliziert die Frage, ist es in Bezug auf die Speicherung der Daten als string in einem Cookie und die re-Analyse zu JSON

Aber, denn ich habe meinen Cookie-Funktionen als Externe Ressource ( http://www.sam.thinkka.com/clientscripts/cookie_test.js ), die Sie benötigen, um sicherzustellen, dass Safari nicht blockiert cookies von Drittanbietern.

  • Nein, das Komma ist nicht das Problem
  • Können Sie ein jsFiddle Beispiel, das dieses problem in Aktion?
  • Für das Protokoll, ich habe Ihre JSON-string zu gut funktionieren in Safari mit jsFiddle... siehe jsfiddle.net/KRR2N Das einzige was ich geändert habe ist das entfernen der // << HERE IS THE ISSUE Kommentar, da das ungültige JSON, aber ich denke, das war nicht in deinem ursprünglichen code.
  • danke. Ich habe auch schon in der Lage, um es arbeiten mit Fiddle, allerdings habe ich extendeed der Fiddle, um meine cookies Funktionen und bekommt jetzt eigentlich einen anderen Fehler! Was darauf hindeutet Cookies nicht funktionieren, aber Sie sind auf alles andere! jsfiddle.net/jhartnoll/2GLEz
  • Argh - Bearbeiten - ignorieren, dass der Grund, Cookies nicht funktionieren ist Safari blockiert mein Skript enthalten!
  • OK, man MUSS halt Safari blockieren von Drittanbieter-Skripten für die Geige zu arbeiten, aber es ist hier: jsfiddle.net/jhartnoll/2GLEz
  • Ähm... ich denke, dass das problem nichts zu tun, JSON, oder meine Cookies, aber discussions.apple.com/thread/4078916?start=0&tstart=0
  • Okay, ich denke, jetzt haben wir Ihr fiddle-code gelangen wir zu dem springenden Punkt des Problems. Im Grunde läuft es auf die Flucht. Aber siehe meine Antwort für mehr.

Schreibe einen Kommentar