我正在尝试使用AngularJS读取嵌套的JSON。以下是嵌套的JSON:
{
"results": [
{
"id": "D1",
"name": "A",
},
{
"id": "D2",
"name": "B",
}
]
}
以下是AngularJS控制器,它以[object object]的形式从PHP获取JSON数据 当我尝试读取JSON时,它会给出一个未定义的值。
function MyController($scope, $http) {
$http({
method: 'GET',
data: "action=0",
url: 'a.php'
}).then(function(data) {
alert("Hello" +data); //alerts Hello[object Object]
$scope.legs = data.results;
alert($scope.legs); //alerts undefined
});
}
试图打印JSON的html代码是:
<tr ng-repeat="l in legs">
<td>{{ l.id }}</td>
</tr>
答案 0 :(得分:0)
您可以查看$ http在https://docs.angularjs.org/api/ng/service/$http
中的工作原理您没有直接获得响应主体作为承诺,您将获得一个包含有关HTTP请求的更多信息的对象,以获取您应该访问其p["unspiderfy"]
属性的正文或数据:
`var omsOptions = {
keepSpiderfied: true,
nearbyDistance: 100,
DisableUnspiderfy: true
};
var oms;
function drawSpiderMarkers(rows, options) {
drawMarkers(rows, options); //This function draws markers by marker options
if (!oms) {
setTimeout(function() {
oms = new OverlappingMarkerSpiderfier(map, omsOptions);
for (var cachedMarkerIndex in cachedMarkers) {
oms.addMarker(cachedMarkers[cachedMarkerIndex]);
}
for (var cachedMarkerIndex in cachedMarkers) {
oms.spiderListener(cachedMarkers[cachedMarkerIndex]);
}
}, 200);
}
}`
我假设您的服务器正在为JSON设置响应标头,以便激活响应转换。
答案 1 :(得分:0)
请在此处阅读$ http promises:https://docs.angularjs.org/api/ng/service/ $ http
您将看到successCallback有一个参数是响应而不是数据本身。响应是包含数据的对象。您需要从此对象 数据 中提取JSON数据。
修改此代码:
}).then(function(data) {
alert("Hello" +data); //alerts Hello[object Object]
$scope.legs = data.results;
alert($scope.legs); //alerts undefined
});
到:
}).then(function(response) {
alert("Hello" + response.data);
$scope.legs = response.data.results;
alert($scope.legs);
});
您的$ scope.legs现在将拥有JSON数据。 ng-repeat应该可以正常工作。