在Express App/NodeJS中返回HTML表单

在Express App/NodeJS中返回HTML表单

问题描述:

我正在构建一个基本用户界面,用户可以在其中输入单词和分数,并将其写入本地JSON文件。这是一个情绪分析API。我有一切运行良好,当我进入一个路线,它成功地输入单词和分数到我的JSON文件。在Express App/NodeJS中返回HTML表单

问题是我在HTML中的输入不起作用。每次我输入一个单词和一个分数,我的控制台就会得到一个404。当我点击我生成的url并将其放入浏览器时,它成功地将数据提交给JSON。所以我想知道我的输入和我的jQuery发布请求有什么问题?

代码:

$.getJSON("/all", function(data) { 
 
    var keys = Object.keys(data); 
 
    console.log(keys); 
 

 
    $("#submit").click(function() { 
 
    var word = $('#word').val(); 
 
    var score = $('#score').val(); 
 
    console.log(word, score); 
 
    var url1 = "add/"; 
 
    var url = url1 + word + '/' + score; 
 

 

 
     $.ajax({ 
 
     type: 'POST', 
 
     url: url, 
 
     success: function(data) { 
 
      console.log('succes'); 
 
      console.log(JSON.stringify(data)); 
 
     } 
 
     }) 
 

 
}); 
 

 
});
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <meta charset="utf-8"> 
 
    <title>New Website</title> 
 
    <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    </head> 
 
    <body> 
 

 
    <p> 
 
    Word: <input id="word" type="text" name="word" value="" placeholder="word"> 
 
    <br/> 
 
    Score: <input id="score" type="number" name="score" value="" placeholder="score"> 
 
    <br/> 
 
    <button id="submit" type="button" name="button">Submit</button> 
 
    </p> 
 

 

 

 

 

 
    <script type="text/javascript" src="script.js"> 
 
    </script> 
 
    </body> 
 
</html>

var fs = require('fs'); 
 
var data = fs.readFileSync('words.json'); 
 
var words = JSON.parse(data); 
 

 
console.log('server is starting'); 
 

 
console.log(words); 
 

 

 
var express = require('express'); 
 

 
var app = express(); 
 

 

 
var server = app.listen(3000, listening); 
 

 
function listening(){ 
 
    console.log('listening...') 
 
} 
 

 
    app.use(express.static('Website')); 
 

 

 

 
    app.get('/add/:word/:score', addWord); 
 

 
    function addWord(request, response){ 
 
     var data = request.params; 
 
     var word = data.word; 
 
     var score = Number(data.score); 
 

 
     words[word] = score; 
 
     var data = JSON.stringify(words,null,2); 
 
     fs.writeFile('words.json', data, finished); 
 

 
     function finished(err) { 
 
      console.log('all set.'); 
 

 

 
     var reply = { 
 
      status: "Success", 
 
      word: word, 
 
      score: score 
 
     } 
 
     response.send(reply); 
 
    } 
 
    } 
 

 

 
    app.get('/all', sendAll); 
 

 
    function sendAll(request,response){ 
 
     response.send(words); 
 
    }

+0

发布您的node.js代码。 –

+0

它现在在@JesseSchokker –

+0

你为什么要将它写入JSON文件?为什么不使用数据库? –

通过改变Ajax请求 'GET',而不是 'POST' 解决。