Angularjs-$ngSource-DELETE:如何获取服务器端返回的响应数据



为什么控制台.log(响应)没有包含来自服务器的响应。如何获得 SpringMVC 返回的"1"或"0"?

var app = angular.module('MyApp', ['ngResource']);

app.factory('baseRequest', ["$resource", function ($resource) {
    return $resource("/apis/:id/:method/", {method: '@method', id: '@id'}, {
        query: {method: 'get', isArray: false}
    });
}]);

app.controller("MyCtrl", ["$scope", "baseRequest", function ($scope, baseRequest) {

    $scope.deleteUser = function (id) {
        baseRequest.delete({method: "deleteUser.req", id: id}, function (response) {
          //I can't get the response data from server side here. 
            console.log(response);
        }, function (error) {
            console.log(error);
        });
    };
}]);

这是我的SpringMVC文件,它重新运行信息"1"或"0",但我不知道如何得到它?

    @ResponseBody
    @RequestMapping(value = "/{id}/deleteUser", method = RequestMethod.DELETE)
    public String deleteUser(@PathVariable("id") Integer id) {
        System.out.println(id);

        if (userDao.deleteUser(id)) {

            return "1";
        } else {
            return "0";
        }
    }

整个代码对我来说似乎是错误的。实际上你的工厂应该是这样的:

app.factory('baseRequest', ["$resource", function ($resource) {
return $resource("/apis/:id", { id: '@id'}, {
    query: {method: 'get', isArray: false}
});
}]);

您的控制器应如下所示:

app.controller("MyCtrl", ["$scope", "baseRequest", function ($scope, baseRequest) {

$scope.deleteUser = function (id) {
    baseRequest.delete({id: id}, function (response) {
      //I can't get the response data from server side here. 
        console.log(response);
    }, function (error) {
        console.log(error);
    });
};
}]);

当您为端点定义资源时,angularjs 会自动为您创建四种方法(动词)(获取、删除、放置、发布)。 因此,无需将方法名称传递给 Web API。

最新更新