【问题标题】:No element found error when using $http service to post data to a local json file使用 $http 服务将数据发布到本地 json 文件时未找到元素错误
【发布时间】:2016-03-22 00:36:59
【问题描述】:

学习角度,在我的应用程序中,我有一个本地 json 文件,我可以使用 $http.get 从文件中读取数据,但现在我也想将数据发布到它。

例如我的 json 文件如下所示:

{
  "name": "old name"
}

在我的控制器中,我正在尝试编辑该名称:

  var data = $.param(
      {"name": "new data"}
  );

  $http.post('testData.json', data)
      .success(function (data,status) {
        console.log("Post success");
      })
      .error(function () {
        console.log("Post failed");
      });

当它尝试 http.post 时,我的浏览器控制台中出现错误“找不到元素”。我确定它指向正确的文件并且 json 文件确实存在。

有什么建议吗?

【问题讨论】:

  • 为什么要发布到 json 文件?
  • 我实际上是在尝试将数据发布到服务器上的真实 REST 端点,但不知道如何操作。所以我认为通过让本地示例工作来学习如何正确地做会更容易。由于 http.get 可用于读取 json,我想为什么 http.post 不可以?
  • 您应该发布到本地端点,而不是本地 json 文件。
  • 您可以使用requestb.in 作为免费端点发布到。

标签: javascript angularjs json http


【解决方案1】:

不要忘记对 JSON 进行字符串处理!:

angular.module('myApp', [])
.controller('myCtrl', function ($scope, $http) {
    $scope.hello = {name: "Boaz"};
    $scope.newName = "";
    $scope.sendPost = function() {
        var data = $.param({
            json: JSON.stringify({
                name: "new data"
            })
        });
        $http.post("/echo/json/", data).success(function(data, status) {
            $scope.hello = data;
        })
    }                   
})

您不能发布到本地 json 文件——它只是不能那样工作。这就是您在代码中所做的;见下文。

 $http.post('testData.json', data)
      .success(function (data,status) {
        console.log("Post success");
      })

如前所述,您发布到本地 JSON 文件 -- 如前所述,该文件不起作用。

您需要发布到本地端点。请参阅 @jdersen 对 OP 的评论,以使用 https://postb.in/ 发布您的数据或设置或本地端点并尝试发布到该端点。

Working Fiddle

【讨论】:

  • 您可能应该解释一下您没有将端点设为“.json”文件。
  • 我做了一个编辑澄清,它正在等待同行评审。
猜你喜欢
  • 2023-03-21
  • 2017-02-02
  • 2021-04-08
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多