You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS中$http.then()后追加数据失败问题咨询

嘿,我帮你梳理下这个问题,看起来有几处关键细节没处理好,咱们一步步来解决:

1. 先修正JSON格式错误

你提供的JSON存在语法问题:数组[]内部不能直接使用key: value的结构,应该把index作为键放在对象中。正确的JSON结构应该是:

{"Data": [{"index": [{"Name":"append_here_1"},{"Name":"append_here_2"}]}]}
2. 修复服务中的依赖注入问题

你的Request_service里用到了$http但没有注入它,这会导致$http未定义,服务根本无法正常发起请求。修改后的Request.js应该是这样:

app.service('Request_service', function($http) { // 这里必须注入$http
 this.get_json = function(){
 return $http.post('http://...', { params_1: "123", params_2: "abc" })
 .then(function success(e) {
 return e.data;
 }, function fail(e){
 console.error('请求失败详情:', e); // 建议打印错误信息,方便排查问题
 return false;
 });
 }
});

小提示:依赖注入是AngularJS的核心机制,任何用到的服务都必须显式注入哦

3. 修正控制器的依赖与异步逻辑

控制器里有两个明显问题:一是依赖名称写错了(Request_servi...应该是Request_service);二是get_json返回的是Promise对象,你必须在Promise的then方法里处理异步返回的数据,而不是直接赋值。修改后的Controller.js:

app.controller('myCtrl', function($scope, Request_service) {
 $scope.index_data = [];

 // 调用服务获取数据,处理异步结果
 Request_service.get_json()
 .then(function(responseData) {
 if (responseData) {
 // 根据修正后的JSON结构,取出需要的index列表
 var newItems = responseData.Data[0].index;
 // 追加数据到index_data数组
 $scope.index_data = $scope.index_data.concat(newItems);
 // 或者用push.apply批量添加:$scope.index_data.push.apply($scope.index_data, newItems);
 console.log('数据追加成功:', $scope.index_data);
 } else {
 console.log('请求返回失败,请检查接口或错误日志');
 }
 });
});
4. 额外排查建议
  • 打开浏览器开发者工具的Network标签,查看请求的响应内容,确认接口确实返回了格式正确的JSON。
  • 如果是跨域请求,需要确保后端配置了CORS(跨域资源共享),否则浏览器会拦截$http请求。

内容的提问来源于stack exchange,提问作者aasqw asdqwd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:58:13