Javascript AJAX json意外标记';

Javascript AJAX json意外标记';,javascript,jquery,ajax,json,syntax-error,Javascript,Jquery,Ajax,Json,Syntax Error,我有以下代码: $.ajax({ dataType: 'text', url: '/_/js/answers.json', type: "GET", success: function (data) { alert(data); alert(data.code); var result = JSON

我有以下代码:

    $.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");
            }
        });
在第一个警报中,
alert(data)
它向我显示“{”code:123}”,在第二个警报中
alert(data.code)
,它告诉我
未定义的
,在第三个警报中
alert(hey.code)
,它向我显示
123
,这就是我想要的,但在第四个警报中,控制台告诉我
未捕获的语法错误:意外标记'

当我将
JSON.parse
更改为
$.parseJSON
时,它会执行完全相同的操作。
我不知道怎么了,json很好(与var hey中的json完全相同)

我将json传递给服务器,如下所示: 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);
    ?>

尝试将数据类型更改为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");
    }
});

JSON周围的
字符使其成为JavaScript字符串,不构成数据的一部分

看起来JSON中包含了通过HTTP请求的字符,因此它们确实构成了数据的一部分

这不是有效的JSON。删除引号

你应该:

{"code": 123}
不是


可能是您的JSON无效,为了确保检查它,您可以说您的警报数据状态为
'{“code”:123}
。这包括不应该出现的单引号。这就是你的问题。单引号是Javascript文字语法的一部分,它们不是JSON本身的一部分。你可以在使用它之前使用JSON.stringify(data)或eval(data)。我认为你应该修复服务器端代码以返回有效的JSON,而不是在你解析它时获取结果的子字符串。出于兴趣,您为什么不使用
数据类型:'json'
而只是获取一个对象作为
数据
参数?如果您将数据类型更改为json,那么jQuery会为您解析它。因此不需要
var result=JSON.parse(数据)因为
数据
已经是一个对象。但是,从其他注释中可以看出,返回的JSONw无效。这个方法需要来自服务器的有效JSON(以及有效的JSON内容类型)是的,但是当我将其更改为JSON时,它会给我错误函数。我可能没有以正确的方式将json传递到服务器。必须将标题内容类型设置为“text/json”
'{"code": 123}'