nodejs實現表單數據的提交


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM