nodejs接受前端传来的参数并返回数据
一 、需求分析
前端传来一个参数,然后用nodejs作为后端接收,并将数据返回给前端
二、实现步骤
后端用nodejs来实现,通过设置一个接口来处理数据
数据传递一定存在跨域问题,这里通过 cors 处理跨域问题
前端通过Ajax将参数传递给该接口
新建一个shell_send.js
var express = require('express');
var app = express();
var process = require('child_process');
app.all("*", function (req, res, next) {
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin", "*");
//允许的header类型
res.header("Access-Contro1-Allow-Headers", "content-type");
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
if (req.method.toLowerCase() == 'options ')
res.send(200);//让options尝试请求快速结束else
next();
})
app.get('/api', function (req, res) {
res.send('OK');
console.log(req.query.a);
process.exec(`/bin/sh send.sh true "@${req.query.a}"`,function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}
});
})
var server = app.listen(8083, function () {
var host = server.address().address
var port = server.address().port
})
建立一个 send.html 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>通知</title>
</head>
<body>
<textarea name="aaa" id="aa" cols="30" rows="10"></textarea>
<button>点击发送</button>
</body>
</html>
<script>
let a = document.getElementById("aa");
let btn = document.querySelector("button");
//点击按钮发起Ajax请求,并将textarea中的内容作为参数传递
btn.onclick = function(){
let xhr = new XMLHttpRequest();
xhr.open("get","http://10.0.0.203:8083/api?a="+a.value);
xhr.send();
xhr.onload = function(){
console.log(xhr.responseText);
}
}
</script>
五、运行
- 在node中运行 shell_send.js 文件,运行命令为
node shell_send.js
- 打开 send.html 文件,写入内容test123,点击发送按钮
- 在控制台可以看到得到,node中会收到发送的信息