2015-10-05 66 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