Не удается прочитать ответ от AngularJS $resource DELETE
Я пытаюсь использовать ресурс AngularJS $ для УДАЛЕНИЯ данных с моего сервера. Однако, когда я записываю результат в консоль, я не вижу данных.
Однако когда я захожу в "Сеть" в консоли Chrome, я вижу УДАЛИТЬ в левом столбце "Путь к имени". Когда я нажимаю "Информация", я вижу пять вкладок на правой панели. Под вкладками "Просмотр" и "Ответ" я вижу правильные данные. Я просто не знаю, как просмотреть или получить их в своем Javascript.
Вот код сервиса javascript:
var MyServices = angular.module('MyServicesName', ['ngResource']);
MyServices.factory('AAAService', function($resource) {
return $resource(serverBaseUrl + 'users/:userId/Video/:videoId/', {userId: '@userId', videoId: '@videoId'}, {
show: {method: 'GET'},
update: {method: 'PUT', params: {id: '@id'}},
delete: {method: 'DELETE', isArray:false}
});
});
И Контроллер:
quizcatControllers.controller('BBBCtrl', ['$scope', '$stateParams', '$http', 'AAAService',
function($scope, $stateParams, $http, AAAService) {
$scope.deleteQuestion = function(user, videoId) {
AAAService.delete({userId: user, videoId: videoId}, function(a, b) {
console.log(a);//Expect to print the data
console.log(b);
});
Может кто-нибудь предложить, как мой код должен быть изменен, чтобы я мог получить данные из ответа? Хотя мои данные ответа не в формате массива, я хотел бы знать, как сделать это для обоих: массив и не стиль массива.
Какими должны быть правильные имена вместо a и b в следующей строке:
AAAService.delete ({userId: пользователь, videoId: videoId}, функция (a, b) {
ОБНОВИТЬ:
Вот результат, который я получаю в обратном вызове успеха для параметра returnValue:
0: "S"
1: "ты"
2: "с"
3: "е"
4: "с"
5: "с"
$ обещание: объект
$resolved: true
прото: ресурс
1 ответ
Использование ресурсов может быть немного запутанным (по крайней мере, они изначально были для меня).
Я думаю, что ваша проблема в том, что ваш вызов на удаление не использует правильную подпись (существуют разные подписи для методов 'GET' и 'не-GET'. В этом случае похоже, что вы отправляете то, что должно быть Ваша функция обратного вызова (для успеха и ошибки) в качестве postData. Используемая вами подпись предназначена для методов GET (в которых нет postData).
Подпись для вашего вызова на удаление должна выглядеть следующим образом (см. Документацию здесь):
Resource.action ([параметры], postData, [успех], [ошибка])
Итак, вы можете сделать что-то вроде этого:
quizcatControllers.controller('BBBCtrl', ['$scope', '$stateParams', '$http', 'AAAService',
function($scope, $stateParams, $http, AAAService) {
$scope.deleteQuestion = function(user, videoId) {
AAAService.delete(
{userId: user, videoId: videoId}, // parameters
{}, // postData, which you don't need for this
// success callback
function (returnValue, responseHeaders) {
// do what you want with the returnValue from the call here
},
// error callback
function (httpResponse) {
// do what you want for error handling here
})
};
}]);