JSON.解析不能在代码中工作,但在开发人员控制台工作得很好

JSON.parse not working in code, but works fine in developer console

本文关键字:工作 开发 控制台 很好 不能 代码 JSON      更新时间:2023-09-26

我有一个angular $http post服务,它与WCF服务对话。http post有一个成功处理程序:

.success(function (data) {
    var response = JSON.parse(data);
    var tsValid = response.Outcome;
    deferred.resolve(tsValid);
}

然而,tsValid总是'undefined'。如果我添加一些控制台日志记录,我可以看到"data"看起来像这样:

 "{'"Message'":'"Valid Timestamp'",'"Reference'":'"CheckTimestamp:Completed'",'"Outcome'":true,'"Data'":null,'"MessageCount'":0,'"MessageGUID'":null}"

那么"response"是这样的:

 {"Message":"Valid Timestamp","Reference":"CheckTimestamp:Completed","Outcome":true,"Data":null,"MessageCount":0,"MessageGUID":null} 

所以都是JSON。Parse在成功处理程序中所做的是去掉转义字符。当我尝试访问响应时。结果是不确定的。

但是,如果我打开命令提示符并执行JSON。手动解析"data"变量,它正确解析JSON,我可以访问response.Outcome.

知道为什么JSON。解析在成功处理程序中不起作用?

EDIT—我修改了控制台输出以删除"data:"answers"response:"标记。它们被我添加到控制台日志中,这样我就可以识别出哪个是哪个。

response下你有键data,所以你应该调用:

var tsValid = response.data.Outcome;

编辑

你能运行这段代码并粘贴日志吗?

.success(function (data) {
    console.log(data);
    var response = JSON.parse(data);
    console.log(response);
    var tsValid = response.Outcome;
    deferred.resolve(tsValid);
}