春天& AngularJS:PUT方法的未定义状态

时间:2016-07-05 20:14:59

标签: angularjs ajax spring

我在更新记录时返回一个字符串,并希望在UI上显示相同的字符串(已成功更新)

这是我的代码:

@RequestMapping(method = RequestMethod.PUT, value = "/update")
    public @ResponseBody String update(@RequestParam("id") int id, @RequestParam("name") String name) {
        employeeService.update(id, name);
        return "updated successfully";

前端代码:

$scope.update = function(Employee) {
                    $http({
                        method : 'PUT',
                        url : '/Employee/update',
                        params : {
                            id : Employee.id,
                            name : Employee.name
                        }
                    }).success(function(data, status, headers, config) {
                        $scope.updatedText = data;
                        $scope.updatedFlag = true;
                    }).error(function(data, status, headers, config) {
                        console.log("data.token " + data.token);
                    });
                };

这是两个有趣的屏幕截图

enter image description here

  

此处状态未定义

再次

enter image description here

  

此处状态为200

请让我知道背后的原因是什么,是的,我可以看到hibernate表中有变化

请帮忙

1 个答案:

答案 0 :(得分:0)

我会告诉你一个例子我如何使用API处理对$http的调用并承诺$q

我在服务中使用它,可以注入我的控制器。

this.update = function (Employee) {
    var datosRecu = null;
    var deferred = $q.defer();
    var token = $cookies.getObject('token');
    $http({
        url: '/Employee/update',
        method: 'PUT',
        params: {
            id: Employee.id,
            name: Employee.name
        },
        headers: {
            'Authorization': 'Bearer ' + token,
            'Content-type': 'application/json'
        }
    }).then(function successCallback(response) {
        datosRecu = response;
        deferred.resolve(datosRecu);
    }, function errorCallback(response) {
        datosRecu = response;
        deferred.resolve(datosRecu);
    });
    return deferred.promise;
};

现在当我将它注入我的控制器时,我可以阅读承诺deferred.promise以及所有响应数据。

我希望它对你有帮助。