2017-11-11 103 views
0

我正在構建一個基本用戶界面,用戶可以在其中輸入單詞和分數,並將其寫入本地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文件?爲什麼不使用數據庫? –

回答

0

通過改變Ajax請求 'GET',而不是 'POST' 解決。