Запись данных JSON в файл с помощью AJAX post node / express

#jquery #json #ajax #node.js #express

#jquery #json #ajax #node.js #экспресс

Вопрос:

Я только начал изучать и экспериментировать с Node.js (впервые имею дело с AJAX, JSON и на стороне сервера), и я хочу опубликовать содержимое простой формы в файле в моем каталоге в формате JSON, используя AJAX и сервер Node / Express. В настоящее время я получаю POST http://localhost:3000/server.js 404 (Not Found) POST http://localhost:3000/add-tasks 500 (Internal Server Error) сообщение об ошибке или каждый раз, когда пытаюсь опубликовать содержимое формы (подробнее см. Вопросы внизу).

Вот структура каталогов:

введите описание изображения здесь

Вот мой HTML (имя файла: index.html ):

 <div>
  <label for="important">Important?</label>
  <input type="checkbox" id="important" name="important">
 </div>
 <div>
   <label for="urgent">Urgent?</label>
   <input type="checkbox" id="urgent" name="urgent">
 </div>
 <button type="button" id="submitToDo">
  Add
 </button>
</div>
  

Вот JS на стороне клиента (имя файла: main.js ):

 $( document ).ready( function () { 

  var userTask = $( "#task" ).val();
  var userImportant = $( "#important" ).prop( "checked" );
  var userUrgent = $( "#urgent" ).prop( "checked" );

  var toDo = {
    task: userTask,
    important: userImportant,
    urgent: userUrgent,
  };

  $( "#submitToDo" ).on("click", function() {
    $.post("/server.js", toDo);
  });

});
  

Вот JS на стороне сервера, который я в основном позаимствовал из учебника, поэтому я не уверен, что все это необходимо (имя файла: server.js ):

 var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var fs = require("fs");

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

app.use(express.static("./public"));

app.post("/add-tasks", function(req, res) {
  fs.write("tasks.json", "JSON", req.body);
});

app.listen(3000);

console.log("Express is running on port 3000");
  

Несколько вопросов, которые у меня возникли, когда я пытался заставить это работать:

  • Какой путь / URL я должен указать для $.post and app.post ? Я получаю ошибку 500, когда я ставлю /add-tasks для $.post , и я получаю 404, когда это /server.js .
  • Это fs.write метод, который я должен использовать для добавления JSON в свои задачи.файл json?

Комментарии:

1. fs.написать документацию

Ответ №1:

Наконец-то понял это. Похоже, возникли две проблемы:

  1. server.js файл должен был быть назван app.js .
  2. Я использовал fs.write метод неправильно и должен был использовать fs.writeFile .