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