AJAX json unexpected token '
Solution 1
The '
characters around your JSON make it a JavaScript string and don't form part of the data.
It looks like you have those characters in the JSON that you are requesting over HTTP so there they do form part of the data.
This is not valid JSON. Remove the quotes.
You should have:
{"code": 123}
Not
'{"code": 123}'
Solution 2
Try changing dataType to JSON:
$.ajax({
dataType: 'JSON',
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");
}
});
bhc11
Updated on April 20, 2020Comments
-
bhc11 about 4 years
I have this 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 the first alert,
alert(data)
it shows me '{"code": 123}', in the second alertalert(data.code)
, it tells meundefined
, in the third alertalert(hey.code)
, it shows me123
, and that's what I want, but in the fourth alert, the console tells meUncaught SyntaxError: Unexpected token '
.
When I change theJSON.parse
to$.parseJSON
, it does exactly the same things.
I don't know what's wrong, the json is fine (exactly the same as the json in var hey).
I passed the json to the server like this: 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); ?>
Thanks, bhc11.