POST请求有效(状态200),但满足失败条件

时间:2015-05-21 03:15:02

标签: angularjs grails

这是我的AngularJS代码发出请求:

$scope.add = function(){    // Function used to add a value to list. Value has name, type, and priority.
    if($scope.thing){
        $scope.items.push(
            {name: $scope.thing,
             type: $scope.worktypeSelection,
             priority: $scope.prioritySelection,
             completed: false,
             comments: '',
             creator: $scope.username,
             assignedTo: $scope.assign
        });

        var itemToJson = $scope.items[$scope.items.length - 1];

        $http.post('http://localhost:8080/server/todoList/addItem', {itemToJson})
        .success(function(response) {alert("success");})
        .error(function(response) {alert("fail");});

        $scope.thing = '';
    }
    else{
        alert("Empty task is not allowed!");
    }
};

我的Grails控制器:

package server

import grails.converters.JSON

class TodoListController {

    def addItem() {
        def newItem = new Item(request.JSON)
        newItem.save(flush: true)
        render newItem as JSON
    }

    def index(){
        render Item.list() as JSON
    }
}

及其域类:

package server

class Item {

    String name
    String type
    String priority
    boolean completed = false
    String comments
    String creator
    String assignedTo

    static constraints = {
        name nullable: false
        priority nullable: true
        type nullable: true
        comments nullable: true
        creator nullable: false
        assignedTo nullable: false
    }
}

当我发起帖子时,我从网络上获得200(据称这意味着帖子没问题),但随后我得到了失败的结果(警报弹出“失败”)。如果请求实际上已到达服务器,我不明白问题是什么

3 个答案:

答案 0 :(得分:0)

itemToJson已经是json对象,

不要在" {}"

之间加入 像这样:

$http.post('http://localhost:8080/server/todoList/addItem', itemToJson)

答案 1 :(得分:0)

你可以尝试使用"然后"方法,我已经遇到了错误/成功方法的一些问题:

$http.post( 'url', data ).then(
    function( result ) {
        // success callback
    },
    function( error ) {
        // error callback
    }
);

否则,问题可能是服务器返回的json不正确。当服务器返回某些内容时,http状态代码为200.但这并不意味着数据是格式良好的JSON。检查JSON是否正确。

答案 2 :(得分:0)

问题似乎与CORS和我的浏览器有关。我在IE中尝试过,它工作正常。在意识到这一点之后,想要在完成这个工作几个小时之后拔掉我的头发,我下载this extension以获得允许CORS的chrome,现在它可以工作(或多或少,有一些问题,但现在有持久性)。