hello.html
<html> <head> <meta charset="utf-8"> <meta http-equiv="Expires" content="0"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-control" content="no-cache"> <meta http-equiv="Cache" content="no-cache"> <title>菜鳥教程 Node.js 實例 </title> </head> <body> <form method="post" action="http://127.0.0.1:3000/index"> 網站名: <input name="name"><br> 網站 URL: <input name="url"><br> <input type="submit"> </form> </body> </html>
index.js 需要開啟node 服務
var http = require('http'); var querystring = require('querystring'); // var postHtml= // '<html><head><meta charset="utf-8"><title>菜鳥教程 Node.js 實例</title></head>' + // '<body>' + // '<form method="post" ">' + // '網站名: <input name="name"><br>' + // '網站 URL: <input name="url"><br>' + // '<input type="submit">' + // '</form>' + // '</body></html>'; http.createServer(function (req,res) { var body = ''; if(req.url == '/index'){ req.on('data',function(chunk){ body +=chunk; }); req.on('end',function(){ res.writeHead(200,{'Content-Type':'text/plain;charset=utf-8'}); var params = querystring.parse(body); res.write(params.name); res.write("\n"); res.write(params.url); res.end(); }); } }).listen(3000);
擴展到mysql
var http = require('http'); var querystring = require('querystring'); var mysql =require('mysql'); // var postHtml= // '<html><head><meta charset="utf-8"><title>菜鳥教程 Node.js 實例</title></head>' + // '<body>' + // '<form method="post" ">' + // '網站名: <input name="name"><br>' + // '網站 URL: <input name="url"><br>' + // '<input type="submit">' + // '</form>' + // '</body></html>'; http.createServer(function (req,res) { var body = ''; if(req.url == '/index'){ req.on('data',function(chunk){ body +=chunk; }); req.on('end',function(){ res.writeHead(200,{'Content-Type':'text/plain;charset=utf-8'}); var params = querystring.parse(body); connect(params); // res.write(params.name); // res.write("\n"); // res.write(params.url); res.end(); }); } }).listen(3000); var pool = mysql.createPool({ host : 'localhost', port : 3306, database : 'toys', user : 'root', password : '' }); function connect(params){ pool.getConnection(function(err,connection){ if(err){ console.log('與mysql數據庫建立連接失敗'); }else{ console.log('與mysql數據庫建立連接成功'); connection.query('insert into test set?',{ amount:10, name: params.name, url:params.url },function(err,result){ if(err){ console.log('插入數據失敗'); }else{ console.log('插入數據成功'); //當一個連接不需要使用時,將其歸還到連接池中 connection.release(); //關閉連接池 //pool.end(); } }); } }) //處理數據庫服務器連接中斷時的操作 pool.on('error',function(err){ if(err.code === 'PROTOCOL_CONNECTION_LOST'){ console.log('與mysql數據庫之間的連接丟失'); //3秒后重新嘗試連接數據庫 setTimeout(function(){ connect(); },3000); }else{ throw err; } }) }
注意:由於跨域問題,使用CORS解決方案
JSONP由於傳輸數據量較大,需要使用POST方式提交,所以使用CORS技術(跨域資源共享)
CORS定義一種跨域訪問的機制,允許一個域上的網絡應用向另一個域提交跨域AJAX請求,只需由服務器發送一個響應標頭即可
例子:(PHP環境)
header("Access-Control-Allow-Origin:*"); //*表示允許任何域向我們的服務端提交請求
header("Access-Control-Allow-Origin:http://www.test.com"); //只允許指定的域
(NodeJS環境)
res.setHeader("Access-Control-Allow-Origin","*");
response.writeHead(200,{"Content-Type":'text/plain','charset':'utf-8','Access-Control-Allow-Origin':'*','Access-Control-Allow-Methods':'PUT,POST,GET,DELETE,OPTIONS'});//可以解決跨域的請求
執行時,可能提示cannot find moudle 'mysql',請在項目目錄下安裝mysql模塊即可:npm install mysql