Javascript $http.get(…)。成功不是一个函数

Javascript $http.get(…)。成功不是一个函数,javascript,angularjs,ajax,function,Javascript,Angularjs,Ajax,Function,我有以下代码: app.controller('MainCtrl', function ($scope, $http){ $http.get('api/url-api') .success(function (data, status, headers, config){ } } 在我的本地环境中,工作正常,但在服务器中,返回以下错误: TypeError:$http.get(…)。成功不是一个函数 有什么想法吗?感谢在Angular v1.4.3之前,.success语

我有以下代码:

app.controller('MainCtrl', function ($scope, $http){
  $http.get('api/url-api')
    .success(function (data, status, headers, config){
     }
}
在我的本地环境中,工作正常,但在服务器中,返回以下错误:

TypeError:$http.get(…)。成功不是一个函数


有什么想法吗?感谢

在Angular v1.4.3之前,
.success
语法是正确的

对于Angular v.1.6之前的版本,必须使用
然后
方法。
then()
方法接受两个参数:一个
success
和一个
error
回调,该回调将使用响应对象调用

使用
then()
方法,将
callback
函数附加到返回的
promise

大概是这样的:

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

   },function (error){

   });
}
参见参考文献

快捷方式
方法也可用

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

function successCallback(response){
    //success code
}
function errorCallback(error){
    //error code
}
您从响应中获得的数据应为
JSON
格式。 JSON是传输数据的好方法,而且在AngularJS中使用非常方便


2之间的主要区别在于
.then()
调用返回一个
承诺
(使用
回调返回的值解决),而
.success()则返回
是注册
回调的更传统的方式,并且不返回
承诺
这可能是多余的,但上面投票最多的答案是
。然后(函数(成功)
这在Angular版本
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.');
});

如果您从2017年10月21日开始尝试使用AngularJs 1.6.6,则以下参数作为.success工作,并且已耗尽。then()方法有两个参数:响应和错误回调,将使用响应对象调用

 $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");
        });

上面的snipit适用于登录页面。

本地envm和服务器上的哪个版本?顺便说一句,返回HttpPromise,因此您需要使用而不是。您是否检查了服务器环境中是否加载了所有javascripts?其
then()
不是
success()
success
语法在Angular v1.4.3之前是正确的。请参阅此处的旧文档:并在v.1.6I中正式删除。然后,工作正常,感谢Alexandru Ionut Mihai
。success
。然后,
使用不同的参数,考虑到这一点,如果重新编写现有代码,可能很容易呈现这两个参数-上面提到的函数(成功、错误)是串联的,与示例中的不同。“$resource(…).get(…)。then不是函数”…为什么angularJS在一致性方面如此糟糕?我的意思是…你是否尝试了
成功。数据
?在这种情况下,参数名称并不那么重要。我的代码可以工作。当我遵循上面的答案时,我被卡住了。这也是一个能够实际获取数据并将其记录到控制台的答案。这可以向开发人员展示如何测试他们浏览器中的eir数据。我在这里被问题标题中相同的错误所引导。旧代码
$http.get('data/data.json')。成功(函数(data){data=data;}
通过我的回答,开发人员现在知道了它的
数据。数据本身无法获取数据。因此,我的回答对于此错误消息很重要。变量名不会有任何区别,它可能是
成功。数据
响应。数据
或其他任何东西。您甚至可以使用
donaldTrump.data
来获取数据t也会起作用。虽然您应该使用合理的变量名,但不确定这个变量名是否有意义。这是因为成功对象有一个名为
data
的数组,该数组保存来自服务器的响应数据。您需要使用
data
访问该数据数组