Mein JavaScript stürzt manchmal in dieser Zeile ab:
var json = eval('(' + this.responseText + ')');
Abstürze werden verursacht, wenn das Argument von eval()
nicht JSON ist. Gibt es eine Möglichkeit zu überprüfen, ob die Zeichenfolge JSON ist, bevor dieser Aufruf ausgeführt wird?
Ich möchte kein Framework verwenden - gibt es eine Möglichkeit, diese Funktion nur mit zu erstellen eval()
? (Es gibt einen guten Grund, das verspreche ich.)
javascript
ajax
json
validation
Nick Heiner
quelle
quelle
Antworten:
Wenn Sie den JSON-Parser von json.org einschließen, können Sie seine parse () -Funktion verwenden und ihn einfach wie folgt in einen try / catch-Befehl einschließen:
So etwas würde wahrscheinlich tun, was Sie wollen.
quelle
Ihre ist die jQuery-Alternative ...
quelle
Ich empfehle dringend, eine Javascript-JSON-Bibliothek für die Serialisierung von und nach JSON zu verwenden.
eval()
ist ein Sicherheitsrisiko, das niemals verwendet werden sollte, es sei denn, Sie sind absolut sicher, dass seine Eingabe hygienisch und sicher ist.Wenn eine JSON-Bibliothek vorhanden ist, schließen Sie den Aufruf einfach
parse()
in einen try / catch-Block ein, um Nicht-JSON-Eingaben zu verarbeiten:quelle
Vielleicht hilft das: Mit diesem Code können Sie Ihre Daten direkt abrufen ...
quelle
Das Problem mit je nach
try-catch
Ansatz ist, dassJSON.parse('123') = 123
es keine Ausnahme auslöst. Dahertry-catch
müssen wir zusätzlich zu dem den Typ wie folgt überprüfen:quelle
Warum können Sie nicht einfach überprüfen, wie die Antwort lautet? Es ist effizienter.
screen1
quelle
Es gibt eine winzige Bibliothek, die JavaScript-Typen überprüft: is.js.
Eigentlich ist is.js viel mehr als das, einige ehrenwerte Erwähnungen:
quelle