2016-12-15 8 views
60

ではありません:[OK]を動作しますが、サーバーでは、このエラーを返す、私の地元の環境には、

app.controller('MainCtrl', function ($scope, $http){ 
    $http.get('api/url-api') 
    .success(function (data, status, headers, config){ 
    } 
} 

を:

TypeError: $http.get(...).success is not a function

アイデア?ありがとう

+1

ローカルenvmとサーバーのバージョンは? btw、[_ $ http.get_](https://docs.angularjs.org/api/ng/service/$http#get)はHttpPromiseを返すので、代わりに_then_を使用する必要があります – Grundy

+0

すべてのjavascriptがサーバー環境? – bansi

+6

その 'then()'ではなくsuccess() ' –

答えて

123

.successの構文は、角度v1.4.3まで修正されました。

角度バージョンv.1.6までのバージョンでは、thenメソッドを使用する必要があります。 then()メソッドは、応答オブジェクトで呼び出されるsuccesserrorコールバックの2つの引数をとります。

then()メソッドを使用すると、返されたにcallback関数を追加します。このような

何か:

app.controller('MainCtrl', function ($scope, $http){ 
    $http({ 
     method: 'GET', 
     url: 'api/url-api' 
    }).then(function (success){ 

    },function (error){ 

    }); 
} 

here.

Shortcut方法もご利用いただけます参照してください。

$http.get('api/url-api').then(successCallback, errorCallback); 

function successCallback(response){ 
    //success code 
} 
function errorCallback(error){ 
    //error code 
} 

回答から得られたデータは、JSONという形式になっているはずです。 JSON 2間の主な違いは、.then()呼び出しがcallbackから返された値で解決promiseを(返すことですデータを輸送する素晴らしい方法であり、AngularJS

内で使用することは簡単です).success()はより伝統的な方法であるcallbacksであり、promiseを返しません。

+0

私はtryed with tryとokありがとう、Alexandru -Ionut Mihai –

+1

'.success'と' .then'は別のパラメータを取る、そのためのアカウント –

1

これは重複している可能性がありますが、上記で最も投票された回答は.then(function (success)と言われており、角度バージョン1.5.8としては機能しませんでした。代わりにresponseを使用してブロック内response.data私が探していた私のjsonデータを入手しました。

$http({ 
    method: 'get', 
    url: 'data/data.json' 
}).then(function (response) { 
    console.log(response, 'res'); 
    data = response.data; 
},function (error){ 
    console.log(error, 'can not get data.'); 
}); 
+0

私はあなたが 'success.data'を試しましたか?この場合、パラメータ名はそれほど重要ではありません。 –

+0

私のコードが動作します。私が上記の答えに従ったとき、私は立ち往生した。実際にデータを取得してコンソールに記録する方法もあります。これにより、ブラウザでデータをテストする方法を開発者に示すことができます。私は質問の見出しに同じ正確な誤りでここに導かれました。 –

+0

古いコード '$ http.get( 'data/data.json')。成功(function(data){data = data;}'私の答えでは、開発者は 'data.data' –

0

次のパラメータが.successとして動作し、枯渇された21/10/2017のようAngularJs 1.6.6を使用しようとしている場合。 .then()メソッドは、レスポンスと、レスポンスオブジェクトで呼び出されるエラーコールバックの2つの引数をとります。

$scope.login = function() { 
     $scope.btntext = "Please wait...!"; 
     $http({ 
      method: "POST", 
      url: '/Home/userlogin', // link UserLogin with HomeController 
      data: $scope.user 
     }).then(function (response) { 
      console.log("Result value is : " + parseInt(response)); 
      data = response.data; 
      $scope.btntext = 'Login'; 
      if (data == 1) { 
       window.location.href = '/Home/dashboard'; 
      } 
      else { 
      alert(data); 
     } 
     }, function (error) { 

     alert("Failed Login"); 
     }); 

上記のスナップショットは、ログインページで使用できます。

関連する問題