这是我的app.js
var express = require('express');
var app = express();
app.post('/view', function(req, res) {
console.log('button clicked !!');
});
app.listen(80);
这是clientside.js 这是我编写ajax调用来运行shell脚本的文件
$('#runScript').click(function() {
$.ajax({
type: 'POST',
dataType: "script",
url: 'file:///D:/UIForCloning/TabitClient.sh',
success: function(data) {
console.log("Success");
},
error: function(error) {
console.log("error");
}
});
});
这是view.html
<!DOCTYPE html>
<body>
<button id='runScript'>LED on</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src='clientside.js'></script>
</body>
答案 0 :(得分:0)
我认为你想要实现的目标与你编码的不同。
如何?
url
指向您希望访问的网址,在您的情况下,发布数据。但是,你的url
指向一个脚本,我猜这没什么意义。/view
app.js
发布任何内容
nodejs
作为spawn
的内置模块。您可以使用exec
或child processes
在nodejs中运行shell脚本。你可以在互联网上找到很多教程,但这里没有说明。以下是一些以get
开头的精彩教程:
https://dzone.com/articles/understanding-execfile-spawn-exec-and-fork-in-node
PS:如果您想要运行脚本,则无需通过点击发布任何内容。一个简单的方法是:
/view
发出exec
个请求。spawn
内的/view
或success:
子进程运行脚本。spawn
方法)。 注意:您可能会遇到exec
或spawnSync
的异步执行问题,因为响应将在执行完成之前发送。在这种情况下,尝试进行$("#sche_inter_form").submit(function(e){
if( ($("#inter_date").val()==="") || checkdateFormat()) {
$("#inter_date").css({"border-bottom":" 1px solid #dd4b39"});
e.preventDefault(e);
}
function checkdateFormat(){
var date = $("#inter_date").val();
console.log(date);
var re= new RegExp("/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d+$/");
var result = re.test(date);
if (result) {
return false;
}
else{
return true;
}
}
之类的同步调用,或使用外部库来处理异步流(例如 - http://krasimirtsonev.com/blog/article/Nodejs-managing-child-processes-starting-stopping-exec-spawn)
希望这有帮助。
答案 1 :(得分:-1)
您只能从服务器后端(通过node.js)执行shell脚本。要调用可执行文件/ shell脚本,您需要节点提供的模块child_process.exec()。 您可以像这样使用它:
rbind(res1[c(1, .N)][, .(timeinterval = paste(substr(timeinterval[.N],
1, 8), substring(timeinterval[1], 10)), timecount= sum(timecount))], res1[-c(1, .N)])
# timeinterval timecount
#1: 21:00:00 02:59:59 6
#2: 08:00:00 09:59:59 2
#3: 14:00:00 14:59:59 1
#4: 19:00:00 19:59:59 1