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

时间:2014-08-20 10:53:41

标签: javascript json

我有一个与$ WCF服务对话的角度$ http邮政服务。 http帖子有一个成功处理程序:

.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:”标记。它们被我添加到控制台日志中,因此我可以确定哪一个是哪个。

1 个答案:

答案 0 :(得分:0)

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