语法错误:JSON.parse:意外字符。

3

我遇到了一个JSON解析错误,但是我无法调试。以下是代码:

$(document).on('submit', '#confirmreset', function(event) {
    event.preventDefault();

    var action_url = $(this).attr("action");
    alert_box_register("Resetting password...");
    console.log(action_url);
    var postData = $(this).serializeArray();
    console.log(postData);

    $.post(action_url, postData, function(data) {
        console.log(data);
        var obj = $.parseJSON(data);

        alert_box_register(obj.message);
    });
});

还有JSON:

{
    "status": "success",
    "message": "A temporary password has been emailed to you."
}

在Firefox中的错误是“SyntaxError: JSON.parse: unexpected character”,在Chrome中则是“Uncaught SyntaxError:Unexpected token C”。 有什么想法吗? *编辑:这在我的本地主机设置上运行良好。*

1
这是有效的 JSON 所呈现的,因此我怀疑 真实的 JSON 数据包含一个未能跨越转换的字符。 - user2864740
JSON 是如何生成的? - Jason P
1
你在哪里调用 JSON.parse 了? - Explosion Pills
发生在 $.parseJSON(data) 内部,但我相信你已经知道了。 - Kevin B
@KevinB 抱歉,不确定我是否理解你的语法? - alias51
显示剩余5条评论
3个回答

18

如果服务器发送的是有效的 JSON 格式,jQuery 在检索响应时将自动解析它,因此您不需要调用 $.parseJSON。我不知道确切的标准,但如果您设置了 Content-type: application/json 标头,则绝对会。


谢谢,那你建议只用 'var obj = $(data);' 吗? - alias51
不需要,只需使用 var obj = data 或者 function (obj) { -- 基本上 data 可以立即使用。 - Explosion Pills
没错,但这可能不是服务器返回的唯一内容。 - Kevin B
@KevinB(顺便说一下,在本地主机服务器上这个工作正常,这很奇怪) - alias51
1
谢谢。我正在寻找答案,这也证明了我的问题。尝试解析已经解析过的数据。因为当使用json作为类型或getJSON作为方法时,它已经被预处理过了。 - Björn3
显示剩余4条评论

0

0
  1. 只需放置这些=>

    dataType: 'text', // 从 PHP 脚本返回的期望结果(如果有) cache: false, contentType: false, processData: false,


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接