API$http delete从angular中的工厂调用时返回405
API $http delete returns 405 when calling from factory in angular
这就是我工厂里的产品。当我在控制器上以常规ajax语法运行它时,它运行得很好。
function endAgentSession(sessionData, tokenData) {
var sessionId = sessionData.data.sessionId,
access_token = tokenData.access_token,
baseURI = tokenData.resource_server_base_uri,
endAgentSessionPayload = {
'sessionId': sessionId,
'forceLogOff': true,
'endContacts': true,
'ignorePersonalQueue': false
};
console.log(sessionId, "sessID");
return $http({
'url': baseURI + 'services/v6.0/agent-sessions/' + sessionId,
'type': 'DELETE',
'headers': {
//Use access_token previously retrieved from inContact token service
'Authorization': 'bearer ' + access_token,
'content-Type': 'application/json'
},
'data': endAgentSessionPayload
}).then(function(res){
return res })};
}
这是我的控制器。当我从控制器中点击ng调用endAgentSession函数时,它会错误地返回405.
$scope.endAgentSession = function(){
agentFactory.endAgentSession($scope.sessionData, $scope.tokenData);
};
我做错了什么?它在控制器中使用ajax工作,然后当我把它移到工厂并使用承诺时,它似乎坏了。
它实际上显示它在网络中请求GET请求。。[![在此输入图像描述][1]][1]
全控制器:
csMgmtApp.controller('launchedController', ['$scope', '$http', '$document', '$resource', 'agentFactory', '$timeout', function ($scope, $http, $document, $resource, agentFactory, $timeout) {
$scope.agentStatePayload = {};
$scope.sessionData = {};
$scope.tokenData = {};
$scope.startSessionPayload = {
'stationPhoneNumber': '2223222222',
'inactivityTimeout': 0,
'inactivityForceLogout': 'false'
};
$document.ready(function () {
$scope.tokenData = agentFactory.getToken();
console.log($scope.tokenData);
});
agentFactory.startSession($scope.startSessionPayload, $scope.tokenData).then(function(res){
console.log("sessionId", res);
$scope.sessionData = res;
});
$scope.endAgentSession = function(){
agentFactory.endAgentSession($scope.sessionData, $scope.tokenData);
};
}]);
除了最后一次会议,一切似乎都在起作用。。
我应该猜到,每次你说
来自控制器的常规ajax语法
您的意思是您以前使用的是jQuery $.ajax
。
不同之处在于,在Angular的$http
中设置请求方法的属性是method
,而不是type
。
您可以使用进一步简化它
return $http.delete(baseURI + 'services/v6.0/agent-sessions/' + sessionId, {
headers: {
Authorization: 'Bearer ' + access_token,
},
data: endAgentSessionPayload
});
相关文章:
- 如何使用异步调用更改工厂的变量
- 如何将控制器http调用转换为接受参数的服务/工厂模式
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 谷歌日历 api 调用可以在角度工厂内返回承诺吗?
- 我是否需要将工厂调用放在控制器的函数中
- 如何从变量中动态调用工厂方法
- 如何从 AngularJS 中的服务调用工厂
- 使用AngularFire创建用户并调用工厂以显示通知
- 调用工厂方法时出现 Angularjs 错误
- 调用工厂函数会触发错误
- 正在尝试调用工厂方法
- AngularJS -当URL改变时不调用工厂
- 在Angular.js中从指令控制器调用工厂
- AngularJS:在循环中调用工厂方法
- 为什么在angular中调用工厂在加载时发生了3次
- 调用工厂函数一次
- AngularJS:从控制器调用工厂
- 在Angular JS中从decorator内部调用工厂服务
- Angular js:如何同步调用工厂/服务方法
- 如何在 ng-submit 调用工厂函数后更新视图