javascript - directive中的$http请求返回正确但不执行success回调函数还报错
ringa_lee
ringa_lee 2017-04-10 15:22:48
[JavaScript讨论组]

在自定义的directive的controller里面,用$http获取了一个game.json,然后赋值给这个directive的一个成员变量。出错了。
在debug中看到获取的game.json文件是对的,但查看$scope下面该directive下被赋值的变量,是一个空数组。

$http.get('/game.json').success(function (data) {
                        console.log('enter success callback');
                        game.backup = data;//backup 不与前端绑定,只备份数据
                        game.reload();//得到数据后给game赋初值
                    });

上面的console.log没有在控制台打印出来,也就是没能进入success回调函数。
其中game.reload()是用来把game.backup拷贝一份给game.values的,game.values也就是最下面一张图里面为空的那个数组

                this.reload = function (n) {
                    if(n===undefined){
                        game.values = angular.copy(game.backup);//得到数据后给game赋初值
                        console.log("updated all levels");
                    }
                    else{
                        game.values[n] = angular.copy(game.backup[n]);
                        console.log("updated level "+n);
                    }
                };

看请求的返回(下图),似乎没有错。
为什么没有进入success回调函数?

$scope里面values数组为空数组,压根就没有出现game.backup这个变量。

报错处的堆栈信息为:

(anonymous function)
$get
processQueue 
(anonymous function) 
$get.Scope.$eval 
$get.Scope.$digest 
$get.Scope.$apply 
done 
completeRequest 
requestLoaded

出错提示为


加上error回调函数之后,发现执行了error回调,获取的四个参数为

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
阿神

这个像是JSON parse 出错了,你把你的JSON字符串检查一下,用原生的JSON.parse转化一下,看会不会出错

PHPz

从提示看是解析的问题,是否跨域了?用JSONP试试。

PHP中文网

明显是json格式错误

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号