在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);
}
答
通过改变Ajax请求 'GET',而不是 'POST' 解决。
发布您的node.js代码。 –
它现在在@JesseSchokker –
你为什么要将它写入JSON文件?为什么不使用数据库? –