【发布时间】:2014-09-14 08:32:34
【问题描述】:
我正在使用 $http 发布一个 angularjs 变量,我确实在 servlet 的 doPost 方法中收到了 JSON 等价物。当我在 servlet 的响应中编写 JSON 时,会调用 $http.success(data, status, header, config) 。但是,当我将“数据”分配给 angularjs 变量时,不会为该变量分配任何值。尝试使用 JSON.parse(data) 但没有用。以下是代码sn-p。
AngularJS
$scope.result = {
title: "",
subject: "",
summary: "",
body: "",
extra: ""
};
$http.post(url, JSON.stringify(obj)).
success(function(data, status, headers, config){
$scope.result = JSON.parse(data);
console.log("data: " + data);
console.log("status: " + status);
console.log("headers: " + headers);
console.log("config: " + config);
})
.error(function(data, status, headers, config){
$scope.result = JSON.parse(data);
console.log("data: " + data);
console.log("status: " + status);
console.log("headers: " + headers);
console.log("config: " + config);
});
收到响应的控制台输出如下
data: [object Object]
status: 200
headers: function (name) {
if (!headersObj) headersObj = parseHeaders(headers);
if (name) {
return headersObj[lowercase(name)] || null;
}
return headersObj;
}
config: [object Object]
以下是来自 servlet 的代码 sn-p。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
System.out.println("doPost called");
response.getWriter().write("{"title":"Transaction Status","subject":"Congratulations!!","summary":"Successfully received your request, below is your Transaction ID","body":"5a85fc3b303d47dca6514b707442f2cd","extra":"Please save this transaction ID for future reference"}");
}
我无法在 angularjs 成功函数中获取从 doPost() 方法发送的 JSON。这是正确的做法吗? Angularjs 自动将接收到的 JSON 转换为 javascript 对象类型,因此我必须能够将“数据”直接分配给 $scope.result。
如果有人能指出正确的方向,那就太好了。
【问题讨论】:
-
data是一个包含属性data的对象。该属性包含您想要的内容。您可能想将data重命名为response。如果你这样做,你可以分配response.data(不使用JSON.parse() -
我试过你的建议,下面是控制台输出。响应:未定义状态:200 标头:函数(名称){ if (!headersObj) headersObj = parseHeaders(headers); if (name) { return headersObj[lowercase(name)] ||空值; } 返回标头对象; } common.js:113 配置:[object Object]
-
在您的成功函数中,添加
console.dir(data)并添加对您问题的回复 -
console.dir 打印出整个对象,这就是我在其中找到的。 "body: "cb309b8454464a0e90b4aea3ecb7372c" extra: "请保存此交易 ID 以备将来参考" 主题: "恭喜!!" 摘要: "成功收到您的请求,下面是您的交易 ID" title: "交易状态" 万感谢您的帮助,它解决了我的问题。
标签: json angularjs servlets post