AJAX-json-unerwartetes token '
Habe ich diesen code:
$.ajax({
dataType: 'text',
url: '/_/js/answers.json',
type: "GET",
success: function (data) {
alert(data);
alert(data.code);
var result = JSON.parse(data);
var hey = JSON.parse('{"code": 123}');
alert(hey.code);
alert(result.code);
},
error: function () {
alert("code not found");
}
});
In der first alert, alert(data)
es zeigt mir, '{"- code": 123}', in der zweiten alert - alert(data.code)
sagt es mir undefined
im Dritten Alarm alert(hey.code)
zeigt er mir 123
, und das ist, was ich will, aber in der vierten Warnung, die Konsole sagt mir Uncaught SyntaxError: Unexpected token '
.
Wenn ich das JSON.parse
zu $.parseJSON
es macht genau die gleichen Dinge.
Ich weiß nicht, was falsch ist, das json ist in Ordnung (genau das gleiche wie das json in var hey).
Ich ging die json auf dem server so:
javascript:
var json = {code: code};
json = JSON.stringify(json);
json = {data: json};
$.ajax({
url: "/_/js/write-json.php",
type: "POST",
dataType: 'json',
data: json
});
php:
<?php
$myFile = "answers.json";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh,var_export($_POST['data'], true));
fclose($fh);
?>
Dank, bhc11.
Es könnte sein, dass dein JSON ist ungültig, sicher sein, check it hier
Sie sagen, dass Ihre Alarm-Daten-Zustände
Einfache Anführungszeichen sind Teil des Javascript-literal-syntax, Sie sind nicht Teil des JSON selbst.
Können Sie JSON verwenden.stringify(data) oder eval(Daten) vor der Verwendung.
Ich denke, du solltest fix die server-side-code zurück gültiges JSON statt ein substring das Ergebnis, wenn yur analysiert. Nur aus Interesse, irgendeinen Grund, warum Ihr nicht mit
Sie sagen, dass Ihre Alarm-Daten-Zustände
'{"code": 123}'
. Dies beinhaltet die single-quotes, die sind nicht dazu gedacht, dort zu sein. Das ist Ihr problem.Einfache Anführungszeichen sind Teil des Javascript-literal-syntax, Sie sind nicht Teil des JSON selbst.
Können Sie JSON verwenden.stringify(data) oder eval(Daten) vor der Verwendung.
Ich denke, du solltest fix die server-side-code zurück gültiges JSON statt ein substring das Ergebnis, wenn yur analysiert. Nur aus Interesse, irgendeinen Grund, warum Ihr nicht mit
dataType: 'json'
und immer nur ein Objekt als data
param?InformationsquelleAutor bhc11 | 2014-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
'
Zeichen, um Ihre JSON-machen es zu einem JavaScript-string und nicht Teil der Daten.Wie es aussieht, haben diese Zeichen in der JSON, das Sie anfordern über HTTP, so dass es Sie tun Teil der Daten.
Dies ist kein gültiges JSON. Entfernen Sie die Anführungszeichen.
Sollten Sie haben:
Nicht
InformationsquelleAutor
Versuchen Sie, dataType, JSON:
var result = JSON.parse(data);
seitdata
ist bereits ein Objekt. Es scheint jedoch, aus den anderen Kommentaren, dass die zurückgegebenen JSONw als ungültig. Diese Methode erfordert gültige JSON vom server (und ein gültiges JSON content-type)Ja, aber wenn ich es ändern, json, das gibt mir die error-Funktion. Ich wahrscheinlich nicht bestanden hat, die json-in der richtigen Weise an den server.
Sie müssen festlegen, header content-type "text/json'
InformationsquelleAutor dbucki