【问题标题】:angularjs $http.jsonp success data access it elsewhereangularjs $http.jsonp 成功数据在别处访问
【发布时间】:2017-01-30 02:57:39
【问题描述】:

如何在$http.jsonp()请求之外访问$scope或者$http中成功获取的数据?

$http.jsonp('http://example.com/?callback=JSON_CALLBACK')
    .success(function(data) {
        $scope.info1 = data.name;
        $scope.info2 = data.company;
    });

console.log("access it here outside: ",$scope.info1);

当前控制台打印未定义。

感谢您的帮助。

【问题讨论】:

    标签: javascript angularjs angularjs-http


    【解决方案1】:

    您不应该认为异步 ajax 调用以同步方式工作。你必须等到 ajax/promise 完成。虽然不要使用.success/.error,但它们已被弃用,请使用.then 代替链接承诺。

    你必须依赖promise才能获得resolve/reject。

    代码

    var promise = $http.jsonp('http://example.com/?callback=JSON_CALLBACK')
    promise.then(function(response) {
        var data = response.data;
        $scope.info1 = data.name;
        $scope.info2 = data.company;
        console.log("access it here outside: ",$scope.info1);
        myOtherFunction($scope.info1);
    })
    .catch(function(error) {
        console.log(error);
    });
    

    【讨论】:

    • 我应该使用什么来代替成功?可以请提供替代方式吗?谢谢
    • 它仍然没有被打印出来!我不确定。
    • 您的控制台日志仍然在then 内,我的意思是完全在与then 和$http 相关的代码之外,我想在同一控制器的另一个功能中使用它。
    • 你必须从当前 jsonp 调用的 .then 调用其他依赖函数
    • 你能举个例子吗?
    猜你喜欢
    • 2014-11-10
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 2016-11-05
    • 2015-08-27
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多