SyntaxError:JSON.parse:JSON 的第 1 行第 2 列出现意外字符

Posted

技术标签:

【中文标题】SyntaxError:JSON.parse:JSON 的第 1 行第 2 列出现意外字符【英文标题】:SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON 【发布时间】:2016-11-19 15:15:35 【问题描述】:

我需要将此 div 附加到另一个 div ,但它给了我这个错误:

语法错误:JSON.parse:第 1 行第 2 列出现意外字符 JSON 数据

这是我的 javascript 代码:

var str = 'message': message,'text': text;
$.ajax(
    type: "POST",
    url: "api/reply",
    data: str,
    dataType: "json",
    cache: false,
    success: function(response)
    
        var respons = jQuery.parseJSON(response);
        var type = respons.status
        if (type == 'success') 
            $("<div></div>").html(respons.message).appendTo("#messages");
        
        else
        
            toastr.error(respons.message)
        
    
)

【问题讨论】:

那不是有效的 JSON。通过 jsonlint.com 运行它来验证它 当您将代码放入 JSBin 时,您会立即发现有一些语法错误。我添加了一个测试 API 端点和一个假输入,以便您可以在那里使用它:jsbin.com/sojibojetu/edit?html,js,output I keep getting "Uncaught SyntaxError: Unexpected token o"的可能重复 【参考方案1】:

简单的改变

var respons = jQuery.parseJSON(response);

var respons = response;

说明:

如果您的 AJAX 调用配置具有 dataType: json,您将获得一个 JavaScript 对象,因此不再需要使用 JSON.parse()。

【讨论】:

【参考方案2】:

这是解析 JSON 的一种 hackish 和非正统方式,但如果您仍想在 AJAX 调用中使用 JSON.parse() 或只是在已解析且不是字符串的 JSON 上使用,您可以在内部使用 JSON.stringify()它:

var respons = JSON.parse(JSON.stringify(response));

【讨论】:

你是对的。但我认为没有用例。 我正在通过这个语句调试我的错误。 var respons = JSON.parse(JSON.stringify(response));【参考方案3】:

问题是您不是在解析字符串,而是在解析已经解析的对象。

【讨论】:

【参考方案4】:

您的对象中的值似乎未定义。 改变 var str = 'message': message,'text': text;var str = message: 'message',text: 'text';

【讨论】:

以上是关于SyntaxError:JSON.parse:JSON 的第 1 行第 2 列出现意外字符的主要内容,如果未能解决你的问题,请参考以下文章

js、javascript : Uncaught SyntaxError: Unexpected token u

SyntaxError:JSON.parse 处的 JSON 输入意外结束 [重复]

在 JSON.parse 的位置 0 处获取“SyntaxError:”JSON 中的意外标记”

SyntaxError:JSON.parse:JSON 的第 1 行第 2 列出现意外字符

SyntaxError:JSON.parse:意外字符在我的控制台中?

我在使用 JSON.parse 时收到“SyntaxError: Unexpected token ' in JSON at position 1”