use*_*273 11 javascript post get node.js raspberry-pi
我在app.js中定义了这三个路由
app.use('/', require('./routes/index'));
app.use('/LEDon', require('./routes/LEDon'));
app.use('/LEDoff', require('./routes/LEDoff'));
Run Code Online (Sandbox Code Playgroud)
在我的路线文件中,我有以下内容:
var express = require('express');
var router = express.Router();
var Gpio = require('onoff').Gpio,
led = new Gpio(17, 'out');
router.get('/', function(req, res, next) {
led.writeSync(1);
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
因此,当我进入/ LEDon页面时,该方法运行并且一切正常.是否可以在不使用get请求的情况下运行方法?我的主要目标是只需单击一个超链接,然后运行该方法..
Kei*_*ong 15
基本上,您要求客户端脚本直接调用Node服务器脚本上的函数.除了Ajax POST
AFAIK 之外唯一的其他选择是Socket.io
这个类似的stackoverflow问题应该可以帮到你.
编辑:我做了一个跨越多个文件的简单示例:
/test/app.js:
var express = require('express');
var app = express();
app.post('/LEDon', function(req, res) {
console.log('LEDon button pressed!');
// Run your LED toggling code here
});
app.listen(1337);
Run Code Online (Sandbox Code Playgroud)
/test/clientside.js
$('#ledon-button').click(function() {
$.ajax({
type: 'POST',
url: 'http://localhost:1337/LEDon'
});
});
Run Code Online (Sandbox Code Playgroud)
/test/view.html
<!DOCTYPE html>
<head>
</head>
<body>
<button id='ledon-button'>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>
Run Code Online (Sandbox Code Playgroud)
要运行它: node app.js
在终端中,然后view.html
在浏览器上打开.尝试按下按钮并检查您的终端.希望这可以帮助.