2016-04-23 55 views
0

为什么console.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,它retruns信息“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"; 
     } 

    } 
+0

为什么你要在资源工厂中传递一个方法变量? –

回答

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。

+0

我是Angularjs的初学者。但根据你的建议,我对此有困惑。如何客户端方法'删除'请求到服务器端'方法'deleteUser',它有一个@RequestMapping like value =“/ {id}/deleteUser”。 – JSO