AngularJS:$ http.post给出404错误,但$ http.get请求到同一个文件是可以的

时间:2017-03-10 19:01:27

标签: angularjs post get request http-status-code-404

我在尝试将某个对象推送到服务器端的json文件时遇到问题(简单的json-server)。当我从这个文件获取http.get信息时一切正常,我得到了需要的信息。然后我希望用户填写一些输入字段,根据用户的输入构建对象,然后我想将此对象推送到我的json文件。我正在尝试创建$ http.post请求,但它返回404错误(POST http://localhost:3000/employees.json 404(Not Found))。请有人帮帮我,告诉我做错了什么?

我的代码:

$scope.employList = [];
$scope.id;

$http.get("employees.json").then(function(response) {
  for (var i = 0; i < response.data["Employees"].length; i++) {
    $scope.employList.push(response.data["Employees"][i]);
  };
});

$scope.getId = function() {
  $scope.id = $scope.employList[$scope.employList.length-1].Id;
};

$scope.save = function (name, surname, position) {
  $scope.getId();
  var newObj = {
    "Id": $scope.id + 1,
    "firstName": name,
    "secondName": surname,
    "position": position
  };
  $http.post("employees.json", JSON.stringify(newObj)).then(function (item) {
    employList.push(item);
  });
};

我使用AngularJS并具有以下分支结构: Branch structure

感谢您的帮助!

- - - - - - - - UPDATE

这是我的employees.json文件:

&#13;
&#13;
{
  "Employees": [
    {
      "Id": 0,
      "firstName": "Jack",
      "secondName": "Sparrow",
      "position": "Captain"
    },
    {
      "Id": 1,
      "firstName": "Michael",
      "secondName": "Jackson",
      "position": "Singer"
    },
    {
      "Id": 2,
      "firstName": "Lionel",
      "secondName": "Messi",
      "position": "Footballer"
    },
    {
      "Id": 3,
      "firstName": "Steve",
      "secondName": "Jobs",
      "position": "Developer"
    },
    {
      "Id": 4,
      "firstName": "John",
      "secondName": "Smith",
      "position": "Developer"
    }
	]
}
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

试试这段代码:

$http.post("employees.json",newObj)
     .then(function (response) { 
        employList.push(response.data); 
      });

答案 1 :(得分:0)

最终我弄清楚出了什么问题。问题出在我的目录结构中,我附在屏幕截图上。 Json-server只维护一个主活动文件,可以获取非GET请求。所以我需要删除我的employees.json文件并将所有信息剪切并粘贴到users.json文件中。然后一切正常。另外,我将users.json重命名为db.json以方便使用。所有其他文件应位于/public目录。