Javascript 无法从ajax调用解析json数据。试图修复使我陷入困境。为什么?

Javascript 无法从ajax调用解析json数据。试图修复使我陷入困境。为什么?,javascript,json,debugging,parsing,jquery,Javascript,Json,Debugging,Parsing,Jquery,更新:@MESSIAH告诉我缩短这个。这是赤裸裸的版本 我无法解析来自ajax调用的响应。我一直在兜圈子。谷歌基本上告诉我这就是问题所在。不管我在ajax调用或调用解析中使用json。它会给我错误 如果直接解析而不使用JSON.parse(),我会得到: 第一个是:uncaughttypeerror:无法读取未定义的属性“time” 好的,这意味着它没有被解析。 目前,我得到这个消息是因为我正在尝试解析: 我现在得到的是:Uncaught SyntaxError:Unexpected token

更新:@MESSIAH告诉我缩短这个。这是赤裸裸的版本

我无法解析来自ajax调用的响应。我一直在兜圈子。谷歌基本上告诉我这就是问题所在。不管我在ajax调用或调用解析中使用json。它会给我错误

如果直接解析而不使用JSON.parse(),我会得到: 第一个是:
uncaughttypeerror:无法读取未定义的属性“time”
好的,这意味着它没有被解析。

目前,我得到这个消息是因为我正在尝试解析: 我现在得到的是:
Uncaught SyntaxError:Unexpected token u
好的,这意味着它被解析了

以下是我的ajax调用:

var reply;
    function sendRouteRequest()
    {
        $.ajax({
            type: 'GET',
            //contentType: "application/json; charset=utf-8",
            url: '/api/getReply',
            data: data, 
            dataType: 'json',
            success: function(result)
            {
                reply = result;
                console.log(reply);
                console.log(reply.time);
            },
            error: function(jqXHR, textStatus, errorThrown)
            {
                alert("Error: " + textStatus + " exception: " + errorThrown);
            }

        });//End of ajax


    }
以下是相关代码:

function parseJson()
{
    //data = JSON.stringify(reply);
    jsonData = JSON.parse(reply);   
    console.log(jsonData.time);    
}
下面是控制台中的回复

Object
alert: Object
points: Array[30]
points: Array[30]
time: 4.72
__proto__: Object
status: Object
__proto__: Object
但是console.log(reply.time)给了我未定义的消息。胡特

兜圈子

极客

更新:我在这里没有显示的函数中调用parseJson(),
$(document).ready(function(){//blah blah}


Servlet返回application/json格式,这看起来不是很好的响应

points: Array[30]
points: Array[30]
你能打印出你得到的响应吗?它看起来像javascript对象,而不是JSON响应

如果它是json响应,那么它应该看起来像

[{"alerts" : {}, "points": [], "time": 4.72 ......}]
我想你取消了这行的注释

dataType: 'json',

从您的日志中,它看起来已经被解析(即,一个对象,而不是一个字符串).另一方面,我看不到你在任何地方调用parseJson…如果服务器的内容类型是json,jQuery不会为你把它变成一个对象吗?@bfavaretto我更新了我的答案来解释。我的问题是,如果它已经被解析,那么为什么会出现第一个错误,对吗?@Geeky:相信我,除非你提出问题,否则你不会得到任何答复缩短3倍。只需发布相关部分!!!可能您试图在响应到达之前读取响应,或者响应超出范围。我们必须从您的代码中了解更多信息。是的,为了访问我需要的内容,我需要调用json对象,如console.log(reply.alert.time)。然后它就成功了!我将继续并将这两条评论合并计算为答案。这确实是答案的开始,但关键是访问结构作为reply.alert.time。