我收到错误TypeError: t(...).success is not a function
。我做了一些搜索,但能理解为什么它会导致我的错误。
我的JS代码如下所示。我究竟做错了什么?为什么我会收到此错误?
var app = angular.module('PriceListEditModule', ['ngRoute']);
app.controller('PriceListEditController', ["$scope", "$q", function ($scope, $q) {
GetBrands();
function GetBrands() {
$http({
method: 'Get',
url: '/GetBrands'
}).success(function (data, status, headers, config) {
$scope.brands = data;
}).error(function (data, status, headers, config) {
$scope.message = 'Unexpected Error';
});
}
}]);
,错误如下
jquery:1 TypeError: t(...).success is not a function
at i (jquery:1)
at new <anonymous> (jquery:1)
at Object.invoke (jquery:1)
at v.instance (jquery:1)
at pt (jquery:1)
at p (jquery:1)
at p (jquery:1)
at jquery:1
at jquery:1
at p.$eval (jquery:1)
答案 0 :(得分:1)
Angular没有成功使用http。
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
并且您没有在控制器中包含$ http作为参考。
app.controller('PriceListEditController',
["$scope", "$q", "$http", function ($scope, $q, $http) {
你真的应该为http调用使用服务,而不是在你的控制器中使用它。
答案 1 :(得分:0)
用
更改它在您的服务中(定义了$ http),创建一个方法
getBrands = function(){
$http.get('/GetBrands', {})
.then(function (result) {
return result.data;
});
}
并使用
从您的控制器中调用它getBrands(data).then(function(data){
//do some error checking and then assign
$scope.brands = data;
})
Angular http与jQuery ajax调用略有不同,您发布的代码看起来非常类似于ajax调用而不是有角度的服务调用。 Angular不支持使用这种语法的回调。
答案 2 :(得分:0)
检查您的角度版本。根据他们的v1.5.11 documentation
弃用通知
$ http遗留承诺方法成功与错误 已弃用,将在v1.6.0中删除。使用标准然后方法 代替。
这意味着如果您使用的是早期版本,则会使用以下内容:
$http({
url: "/url",
method: 'GET',
}).success(function (result) {
//do success
}).error(function (data, status, headers, config) {
//do error
});
如果您使用的是1.6.0或更新版本,则可以使用:
$http({
url: "/url",
method: 'GET',
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
如果未定义$http
,则不会将其注入控制器。将它注入您的控制器,如:
app.controller('controller', ['$scope','$http', function($scope,$http){}])