Не удается прочитать ответ от 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
            })
    };
}]);
Другие вопросы по тегам