我想获取$HTTP的响应并将其映射到一个空对象。这是我尝试过的
主要代码
function myData( myUrl) {
$http({
method: 'POST',
url: "http://localhost:8085/api/foo",
data: $scope.myUrl,
})
.then(
function successCall(response) {
$scope.resultForRecord=response;
$scope.obj=[];
angular.forEach(response,function (valueToObj,key) {
$scope.obj.push(
{'key' : $scope.resultForRecord.toString().split("=")[0],'value' : $scope.resultForRecord.toString().split("=")[1]})});
console.log($scope.obj);
},
function errorCall(response) {
console.log(response);
$scope.resultForRecord=response;
});
}
并且错误是valueToObj.split不是一个函数
现在我已经尝试了硬编码的练习演示。效果很好。这是演示
演示:
angular.module('app')
.controller('MainCtrl', function ($scope) {
$scope.dataSet=[
"jon=12",
"petter=10",
"sara=8"
];
$scope.obj=[];
angular.forEach($scope.dataSet,function (key,value) {
$scope.obj.push(
{'name' : key.split("=")[0],'age' : key.split("=")[1]}
);
});
console.log($scope.dataSet);
console.log($scope.obj);
});
我该如何解决这个问题? 提前致谢
angular.forEach(response, function(valueToObj, key) {
$scope.obj.push(
{
'key' : $scope.resultForRecord.toString().split("=")[0],
'value' : $scope.resultForRecord.toString().split("=")[1]
}
);
});
我重新格式化了您的代码以使其更清晰。
阅读该代码:
- 您正在迭代
response
的所有领域。response
是 HTTP 响应对象,它有 4 个字段:状态(数字(、标头、数据、配置。您实际上希望遍历作为响应主体发送的 JSON 对象的元素 (response.data
(; - 您甚至没有对函数内的当前元素执行任何操作。您不是拆分
valueToObj
,而是拆分$scope.resultForRecord.toString()
。因此,您多次拆分同一事物,而该内容再次是整个HTTP响应的字符串表示形式。
您最可能想要的是:
angular.forEach(response.data, function(element) {
$scope.obj.push(
{
'key' : element.split("=")[0],
'value' : element.split("=")[1]
}
);
});
或者,更清洁:
$scope.obj = response.data.map(function(element) {
var parts = element.split("=");
return {
key: parts[0],
value: parts[1]
};
});
.split 需要一个字符串。
您正在使用 .. 迭代数组。
valueToObj.split
这假设每次迭代值ToObj都是一个字符串。但是,如果它不是字符串,则该函数将不存在,您将收到此错误。这是因为 split 函数仅存在于字符串上。