$ http.get(…).success不是一个函数

我有这个代码:

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

在我的本地环境中,工作正常,但在服务器中,返回此错误:

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

有任何想法吗? 谢谢

.success语法在Angular v1.4.3中是正确的。

对于Angular v.1.6以上的版本,您必须使用方法。 then()方法有两个参数:一个success和一个errorcallback,它将被一个响应对象调用。

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

像这样的东西:

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

在这里看到参考。

Shortcut方式也是可用的。

 $http.get('api/url-api').then(successCallback, errorCallback); function successCallback(response){ //success code } function errorCallback(error){ //error code } 

您从响应中获得的数据预计将采用JSON格式。 JSON是一种传输数据的好方法,在AngularJS中使用起来很简单

2之间的主要区别在于.then()调用返回一个promise (使用从callback函数返回的值来parsing),而.success()则是传统的注册callbacks方法,不返回promise

这可能是多余的,但上面最投票答案说.then(function (success) ,并没有为我的Angular版本1.5.8工作,而是使用response然后在块内response.data让我我的JSON数据I正在寻找。

 $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()方法有两个参数:一个响应和一个错误callback,它将被一个响应对象调用。

  $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适用于login页面。