2015-10-05 79 views
1

由于某些原因,下面的角度服务中的jsonp调用不能成功解决。这不是网址。任何想法为什么?带有嵌套jsonp的角度服务

getDepotInfo : function (depotCode) { 

       var deferred = $q.defer(); 
       var oneDepInfo = {}; 

    $http.get("data/depotList.json").success(function (data) { 
        some code... 


       }).then(function(){ 

        $http.jsonp("http://urlhere").success(function (response) { 

          additional code... 

          deferred.resolve(oneDepInfo); 

        }) 
       }); 

       return deferred.promise; 
      } 
+0

能否请您为我们提供从服务器的响应? – jeerbl

+0

您正在将不赞成使用的'.success'风格与正确的'.then'承诺混合在一起,但随后从'$ q'中添加了另一个不必要的承诺层。 –

+0

在控制台中显示错误? –

回答

0

尝试变化:

编辑1

$http.get("data/depotList.json").then(
    function(){ 
     $http.jsonp("http://urlhere").success(function (response) { 
      deferred.resolve(response); 
     }); 
    }, 
    function(error){ 
     console.error("ERROR: " + error); 
    } 
); 

EDIT 2

$scope.getDepo = function(callback){ 
    $http.get("data/depotList.json").then(
     function (data) { 
      //additional code sucess... 
      callback(data); 
     }, 
     function(data){ 
      //additional code error... 
      $scope.getOuther(callback); 
     } 
    ); 
}; 

$scope.getOuther = function(callback){ 
    $http.jsonp("http://urlhere").then(
     function (data) { 
      //additional code sucess... 
      console.log("Sucess: " + data); 
      callback(data); 
     }, 
     function(data){ 
      //additional code error... 
      console.log("ERROR: " + data); 
     } 
    ); 
}; 

$scope.go = function(){ 
    $scope.getDepo(function(data){ 
     console.log("Sucess: " + data); 
    }); 
}; 
+0

如果我用$ http.get替换$ http.jsonp并测试一个不是跨源的url,我可以收到成功响应。我也可以测试嵌套https之外的$ http.jsonp调用,并且它工作正常。在回调中使用$ http.jsonp似乎有问题...上面的答案没有帮助。 – user1824797

+0

寻找编辑2 –

0

你用什么版本angularjs的?

小心成功的方法,在最新的稳定版本的角度(1.4.7,据我所知)的$ HTTP承诺方法的成功和错误已被弃用。从angularjs DOC:

取消通知

的$ HTTP遗留承诺的方法成功和错误已被弃用。改为使用标准然后方法。如果$ httpProvider.useLegacyPromiseExtensions设置为false,那么这些方法将抛出$ http /传统错误

尝试捕获错误(与catch(errorCallback)),以确保或只是更改为then方法,而不是success

+0

“角”:“1.3.16” – user1824797

+0

迄今没有任何建议有帮助。谁能提供更好的建议? – user1824797