【问题标题】:ajax post request is completed (status: 200) but it is not adding information to json fileajax 发布请求已完成(状态:200),但未向 json 文件添加信息
【发布时间】:2019-03-05 13:39:42
【问题描述】:

我的代码是通过 jQuery AJAX 简单地获取和发布到 JSON。 这是 JSON 文件“drinks.json”

[{
        "id": 1,
        "name": "Will",
        "drink": "coffee"
}]

我能够从 json 文件中读取数据,但是在尝试发布数据时,永远不会将其放入 json 文件中。这是我的发帖请求:

 $("#add-order").on("click", function () {  
  var order = {
    id: 3,
    name: $name.val(),
    drink: $drink.val()
  };

  $.ajax({
    method: "POST",
    data: order,
    url: "./drinks",
    dataType: "json"
  }).done(function(r){
    console.log(r);
  })
});

我正在使用 wampserver,我可以看到请求的状态是 200。我还尝试了 JSON.stringify(order),但没有成功。

【问题讨论】:

  • 你的意思是./drinks 字面上指向一个静态的.json 文件??如果是这样,您就不能像使用 HTTP 请求那样向其写入数据(除非您将文件系统权限完全置于不安全状态)——您需要一种服务器端编程语言来接收 HTTP 请求、处理它并写入数据到文件中。
  • 如果您已经在使用服务器端脚本,那么您需要向我们展示该代码,因为错误更可能出现在 JS 中。

标签: json ajax post


【解决方案1】:

我认为您正在尝试将数据直接发布到 json 文件。不幸的是,你不能那么容易地做到这一点。您根本无法通过 AJAX 直接在服务器上写入文件,但您可以通过创建额外的小 PHP 文件并在那里发送数据来实现。

<?php
   $arrFromJson = json_decode(file_get_contents("drinks.json"), true);
   array_push($arrFromJson, $_POST["newDrink"]);
   // change json accordingly -> var order = { newDrink: { ...
   $newJson = json_encode($arrFromJson);
   file_put_contents("drinks.json", $newJson);
?>

【讨论】:

  • 非常感谢您的回答。你觉得我可以用 Node.js 代替 php 吗??
  • @Amonem 当然,您可以使用您的操作系统和网络服务器支持的任何服务器端语言
  • 非常感谢 ADyson ... 不胜感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多