【发布时间】:2016-10-13 03:19:15
【问题描述】:
我确信类似的问题已经被问过并回答了很多次,但我想我没有正确地措辞这个问题,因为我还没有找到任何适合我的答案。
我正在使用 Node 发送 API 请求并将数据返回到我的 Angular 应用程序中:
app.get('/personInfo/:personName', function(req,res){
Module.Person.getByName(req.params.personName)
.then(function (person) {
res.json(person);
});
});
应用程序通过以下脚本包含响应:
$scope.submit = function(){
$http.get('/personInfo/' + $scope.person.name).success(function(response){
console.log(response);
});
};
($scope.person 链接到我的 .html 文件的某些字段,它似乎工作正常)
我要找回来了(假设我通过 $scope.person.name 传递了 johnny)
johnny:Object
__proto__:Object
第一个对象包含我想要的数据......所以我不能直接访问它的属性。
我无法对此执行简单的response.id, response.name, response.profileIconId 等...我必须像这样访问它:
response.johnny.property ...显然...
我做错了什么?是否可以在服务器级别或客户端级别使用某种形式的格式化或解析,这样我就可以直接访问对象的属性而无需指定动态父对象?
【问题讨论】:
-
$http.get('/personInfo/' + $scope.person.name)是危险的,因为当人名包含 URL 特殊字符时,它可能会(最好的情况)或注入攻击的风险(最好的情况)或注入攻击。 始终正确编码数据。在这种情况下,请使用encodeURIComponentI()。 -
encodeURIComponent()?我在这些脚本中更改了很多东西以保持简单。但我以前不知道,我很感激。
-
检查服务器端代码并查看
person对象是否包含类似johny:{...}的内容。这可能是您收到您所描述的响应的原因 -
@VikashKesarwani 当我登录人时,我只是得到 [object Object] - 我应该访问某些属性吗?
-
@BarryD。登录
JSON.stringify(person),它会打印出这个人的字符串表示,然后你就可以验证结构了。