AngularJS版本1.6从`.success`方法更改为`.then`方法

时间:2017-03-20 04:06:37

标签: angularjs angular-http angularjs-1.6

实际上我正在关注一个春季教程..来到Angularjs,他正在使用.succes

var app=angular.module("MyApp",[]);
.controller("MyController",function($scope,$http){
    $scope.pageProduits=null;

    $http.get("http://localhost:8080/chercherProduits?mc")
    .success(function(data){
         $scope.pageProduits=data;
    })
    .error(function(err){
         console.log(err);
    });

});

现在我的问题是成功无效并且在搜索之后我发现.success和.error方法已被弃用并已从AngularJS 1.6中删除。我必须使用标准的.then方法。 有人可以将现有代码转换为使用当时的方法进行编码吗?我试过,但我失败了任何人都可以帮助PLZ bcz不熟悉javaScript? 谢谢

4 个答案:

答案 0 :(得分:3)

之前

$http(...).success(function onSuccess(data, status, headers, config) {
  // Handle success
  //...
}).error(function onError(data, status, headers, config) {
  // Handle error
  //...
});

$http(...).then(function onSuccess(response) {
    // Handle success
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;
    //...
  }).catch(function onError(response) {
    // Handle error
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;
    //...
  });

有关详细信息,请参阅AngularJS Developer Guide - Migrating from V1.5 to V1.6

另见Why are angular $http success/error methods deprecated? Removed from v1.6?

答案 1 :(得分:1)

像这样使用include 'connection.php'; 来捕获响应。 请务必使用then,因为响应数据位于response.data属性

data

使用$http.get("http://localhost:8080/chercherProduits?mc") .then(function(response){ $scope.pageProduits=response.data; },function(response){ console.log(response.data); }) 以行方式显示数据

ng repeat

答案 2 :(得分:0)

AngularJS $http服务向服务器发出请求,并返回response。使用then代替success,如下所示:

var app=angular.module("MyApp",[]);
app.controller("MyController",function($scope,$http){
$scope.pageProduits=null;

$http.get("http://localhost:8080/chercherProduits?mc")
.then(function(data){  // function that execute on ajax success
     $scope.pageProduits=data.data;
}, function error(function(err){  //function that execute on ajax error
     console.log(err.statusText);
});
});

答案 3 :(得分:0)

根据棱角分明Js官方文件。 Successerror方法已不再可用。这些方法是折旧的,而是建议使用标准的.then方法。 Succces方法仅返回响应中的data,但在.then方法中,返回完整的response对象。

var app=angular.module("MyApp",[])
.controller("MyController",function($scope,$http){
    $scope.pageProduits=null;

    $http.get("http://localhost:8080/chercherProduits?mc")
    .then(function(response){
         if(response.status === 200) {
             $scope.pageProduits=response.data
         }
    }, function(error) {
        console.log(error)
    });
});

更多信息:https://docs.angularjs.org/api/ng/service/ $ http