2016-04-15 22 views
0

私はこの間私の頭をしばらく掻いてきました。私はElectronを使ってデスクトップアプリケーションの計画を立てています。したがって、私はNode.jsとExpress.jsを使ってアプリケーションを開発しています。jsonファイルにフォームデータを書き込む - javascript

<form> 
    <input type="text" name="name"> 
    <input type="text" name="url"> 
    <button type="submit">Submit</button> 
</form> 

から送信ボタンに設定されたjQueryのイベントハンドラがあります:

var express = require("express"); 
var app = express(); 

app.use(express.static(__dirname + '/public')); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

は、その後、私は自分のページ上のフォームを持っている:私は私のサイトコードを起動し、簡単なapp.jsファイルを持っていますscript.jsファイル:私は、フォームから取得し、JSONファイルに書き込むテキストを取る行う(アプリケーションを閉じて再び開いたとき、それを再度読むことができます)どのよう

$(document).ready(function(){ 
    var text; 
    $('form').submit(function(event) { 
     text = $(this).serializeArray(); 
     console.log(text); 
     event.preventDefault(); 
    }); 
}); 

あり、この質問と答えです:Writing files in Node.js

は、と私は理解していることが、どのように私は私のsubmitボタンからそのコードを実行していますか?

マイファイル構造は非常に単純です:クライアントで

|- app.js 
|- package.json 
|- node_modules 
|- public_ 
    |- data.json 
    |- index.html 
    |- jquery.js 
    |- script.js 
    |- style.css 
    |- bootstrap.min.css 
    |- bootstrap.min.js 

答えて

1

$(document).ready(function(){ 
    var text; 
    $('form').submit(function(event) { 
     text = $(this).serializeArray(); 
     // Send data to server 
     $.post('/saveFile', {data: text}); 
     event.preventDefault(); 
    }); 
}); 

だから、あなたがAJAX要求を使用してデータを送信することができます。私たちが受け取ってPOSTの要求に応じsaveFileと呼ばれるルートを作成

ここ
app.post('saveFile', function(req, res) { 
    // Write to file, I think received data is in req.body.data 
}); 

:サーバー上jQuery.post()

についての詳細を参照してください。受信したデータをファイルに書き込むことができます。

app.post('saveFile', function(req, res) { 
    fs.writeFile("save.txt", req.body.data, function(err) { 
     if(err) { 
      return console.log(err); 
     } 

     console.log("The file was saved!"); 
     res.end("This message will be sent back to the client!"); 
    }); 
}); 
+0

一つの小さな事:

だから、あなたはこのようなものを持っているでしょう。 Expressは現在、本文を解析していません。ボディパーサーを追加する必要があります。 [Express req.body](http://expressjs.com/en/api.html#req.body)。または適切な質問Stackoverflow [ExpressでPOSTクエリパラメータを取得する方法](http://stackoverflow.com/questions/5710358/how-to-retrieve-post-query-parameters-in-express/12008719#12008719) – Bonanza

+0

これはすべてコンパイルしてもエラーは発生しませんが、app.post関数内からファイルに書き込む際に助けが必要です。 –

+0

ええ、考慮すべきことがたくさんありますが、リクエストが完了した後にクライアントで何かしたいこともあります。フォーム提出時にサーバー上で何かを実行する方法に関する質問に答えることにしました。 – Cristy

関連する問題