2015-02-09 32 views
0

我构建了一个rest-API来在mongodb中添加待办事项。我可以通过在邮递员中使用以下设置来成功保存实例:使用来自Angular.js的帖子不起作用

http://localhost:3000/api/addtodo x-www-form-urlencoded with value text =“Test”,completed:“false”。

现在,当我尝试复制这与Angular,它不工作,待办事项被保存,但没有文本和完成属性,我似乎无法访问文本或从身体完成的值。我究竟做错了什么?下面的代码:

角HTML:

<div id="todo-form" class="row"> 
      <div class="col-sm-8 col-sm-offset-2 text-center"> 
       <form> 
        <div class="form-group"> 

         <!-- BIND THIS VALUE TO formData.text IN ANGULAR --> 
         <input type="text" class="form-control input-lg text-center" placeholder="I want to buy a puppy that will love me forever" ng-model="formData.text"> 
        </div> 

        <!-- createToDo() WILL CREATE NEW TODOS --> 
        <button type="submit" class="btn btn-primary btn-lg" ng-click="createTodo()">Add</button> 
       </form> 
      </div> 
     </div> 

角JS:

$scope.createTodo = function() { 
    $http.post('/api//addtodo', $scope.formData) 
     .success(function(data) { 
      $scope.formData = {}; // clear the form so our user is ready to enter another 
      $scope.todos = data; 
      console.log(data); 
     }) 
     .error(function(data) { 
      console.log('Error: ' + data); 
     }); 
}; 

REST的API:

router.post('/addtodo', function(req,res) { 
    var Todo = require('../models/Todo.js'); 
    var todo = new Todo(); 

    todo.text = req.body.text; 
    todo.completed = req.body.completed; 

    todo.save(function (err) { 
    if(!err) { 
     return console.log("created"); 
    } else { 
     return console.log(err); 
    } 
    }); 

    return res.send(todo); 

}); 
+0

确保您在todoform页 – skmahawar 2015-02-09 14:35:58

回答

2

$http.post使用application/json,而不是application/x-www-form-urlencoded并将其发送的数据。 Source

如果您使用body-parser,请确保您已包含JSON中间件。

app.use(bodyParser.json()); 

要么改变你的角度的默认标题。

module.run(function($http) { 
    $http.defaults.headers.post = 'application/x-www-form-urlencoded'; 
}); 
+0

嗯添加控制器,我有 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended:false})); 在我的app.js中,但它不工作? – 2015-02-09 12:46:50

相关问题