$ 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
和一个error
callback,它将被一个响应对象调用。
使用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页面。