javascript - JSON.parse 在代码中不起作用,但在开发人员控制台中工作正常

标签 javascript json

我有一个 Angular $http post 服务,它与 WCF 服务进行通信。 http post 有一个成功处理程序:

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

但是,tsValid 始终为“未定义”。如果我添加一些控制台日志记录,我可以看到“数据”如下所示:

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

然后“响应”看起来像这样:

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

因此 JSON.parse 在成功处理程序中所做的所有操作都是删除转义字符。当我尝试访问 response.Outcome 时,它​​是未定义的。

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

知道为什么 JSON.parse 在成功处理程序中不起作用吗?

编辑 - 我修改了控制台输出以删除“data:”和“response:”标签。它们被我添加到控制台日志中,这样我就可以识别哪个是哪个。

最佳答案

响应下,您有关键的数据,因此您应该调用:

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);
}

关于javascript - JSON.parse 在代码中不起作用,但在开发人员控制台中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402866/

相关文章:

javascript - 对多列进行连续多次删除

json - 如果模型具有 Int64,则放置/发布 json 不适用于 ODataController

json - 在 Postgresql 中查询复杂 JSON 的简洁方法

java - Spring MVC 中的 jackson

javascript - 更改大小后 Canvas 状态丢失

javascript - 将 curl 转换为 Javascript ajax 代码

javascript - 是否可以从 XML 数据生成 HTML 5 页面?

javascript - 本地文件未触发 webRequest.onHeadersReceived

javascript - 在 Javascript 字符串中查找 <img> 标签的 src 属性值

javascript - JSON 到数组 - 如何解析这样的结构?