首页 > 解决方案 > ajax 发布请求已完成(状态:200),但未向 json 文件添加信息

问题描述

我的代码是通过 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),但没有成功。

标签: jsonajaxpost

解决方案


我认为您正在尝试将数据直接发布到 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);
?>

推荐阅读