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

我有这个密码:

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

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

TypeError: $http.get (...) . Success 不是一个函数

有什么想法吗? 谢谢

137155 次浏览

到 Angular v1.4.3为止,.success语法都是正确的。

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

Using the then() method, attach a callback function to the returned promise.

就像这样:

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


},function (error){


});
}

参见参考 给你。

Shortcut方法也可用。

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


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

您从响应中获得的数据应该是 JSON格式的。 JSON 是一种很好的 资料传输方式,在 < strong > AngularJS 中使用也很方便

两者之间的主要区别在于,.then()调用返回 promise(用从 callback返回的值解析) ,而 .success()是更传统的注册 callbacks的方式,不返回 promise

This might be redundant but the above most voted answer says .then(function (success) and that didn't work for me as of Angular version 1.5.8. Instead use response then inside the block response.data got me my json data I was looking for.

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

如果您正在尝试使用 AngularJs 1.6.6作为21/10/2017,以下参数的工作原理如下。已经耗尽了。那个。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");
});

上面的代码片段适用于登录页面。