【问题标题】:Updating JSON file using JQuery to perform AJAX call nodejs使用 JQuery 更新 JSON 文件以执行 AJAX 调用 nodejs
【发布时间】:2016-06-22 21:03:36
【问题描述】:

我想通过使用表单中的用户输入将新用户添加到 json 文件 我可以使用下面的代码将信息上传到 txt 文件,但我不知道如何使用 json 执行此操作,谢谢您的帮助

ejs 文件:

<!DOCTYPE html>
<html>
<head>
<title> users </title>
</head>

<body>
  <h1>Users</h1>
  <% include templates/header.ejs %>

  <form action="http://127.0.0.1:3000/users" id="new" method="post" enctype='application/json'>
    <div id="form">
      <label for="lname">Last Name</label> <input type="text"  id="lname" name="lname">

      <label for="fname">First Name</label><input type="text"id="fname"name="fname">

      <label for="id">ID</label><input type="text"id="id"name="id">

      <button type="submit" id= "submit" value="Submit" >Submit</button>

 </form>

</body>
</html>

user.js 文件:

var express = require('express');
var router = express.Router();
var fs = require("fs");

router.get('/', function(req, res, next) {
  res.render('users');
});


//will send the user input
router.post('/', function(req, res) {

  var first= req.body.fname;
  var last= req.body.lname;
  var id= req.body.id;

  filePath = __dirname + '/people.txt';
  fs.appendFile(filePath, JSON.stringify(first + "   " + last + "   "+ id ),   function () {
    res.end();
  });

});

router.get('/listUsers', function (req, res) {
  fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {

    console.log( data );
    res.end( data );
  });
})

module.exports = router;

【问题讨论】:

  • 您想将 JSON 文档写入文件?
  • 旁注,你没有关闭你的div

标签: jquery json ajax node.js


【解决方案1】:

我建议不要使用文件来执行此操作。但是,如果您坚持,您始终可以将数据保存为标准 JSON 格式。为此,您可以执行以下操作:

var express = require('express');
var router = express.Router();
var fs = require("fs");

router.get('/', function(req, res, next) {
res.render('users');
});


 //will send the user input
 router.post('/', function(req, res) {

  var first= req.body.fname;
  var last= req.body.lname;
  var id= req.body.id;

   var person = {
     first: first,
     last: last,
     id: id
   }; // if you are using es6 you do var person = {first, last, id}

  var filePath = __dirname + '/people.json';
  fs.readFile(filePath, function (err, file) {
    if (err) {
      res.status = 500;
      res.send(err).end();
      return;
    }

    var fileString = file.toString();
    var people = fileString ? JSON.parse(fileString) : [];
    people.push(person);
    fs.writeFile(filePath, JSON.stringify(people), function(err) {
       if (err) {
        res.status = 500;
        res.send(err).end();
        return;
      }

      res.end();
    });
  });
});



router.get('/listUsers', function (req, res) {
  fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
    if (err) {
      res.status = 500;
      res.send(err).end();
      return;
    }
    res.json(JSON.parse(data));
  });
})



module.exports = router;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2015-02-04
    • 2017-07-29
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多