这是我的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(据称这意味着帖子没问题),但随后我得到了失败的结果(警报弹出“失败”)。如果请求实际上已到达服务器,我不明白问题是什么
答案 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,现在它可以工作(或多或少,有一些问题,但现在有持久性)。