使用AJAX post + node / express将JSON数据写入文件

时间:2016-10-13 08:33:51

标签: jquery json ajax node.js express

我刚刚开始学习和试验Node.js(第一次处理AJAX,JSON和服务器端),我想使用AJAX将一个简单表单的内容以JSON格式发布到我的目录中的文件中Node / Express服务器。我每次尝试发布表单内容时都会收到POST http://localhost:3000/server.js 404 (Not Found)POST http://localhost:3000/add-tasks 500 (Internal Server Error)错误(有关详细信息,请参阅底部的问题)。

这是目录结构:

enter image description here

这是我的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,我大多是从教程中借用的,所以我不确定是否所有必需(filename: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");

我试图让这个问题解决时遇到的问题很少:

  • 我应该为$.postapp.post添加什么路径/网址?当我为/add-tasks添加$.post时,我收到500错误,当/server.js时我得到404。
  • 我应该使用fs.write方法将JSON添加到 tasks.json 文件中吗?

1 个答案:

答案 0 :(得分:0)

终于明白了。似乎有两个问题:

  1. server.js文件应该命名为app.js.
  2. 我使用fs.write方法不当,应该使用fs.writeFile