我有一个简单的问题,已经问过很多遍了,但是我解决不了。 我只想从html组件部分调用一个javascript文件来运行命令,然后单击一个按钮。
但是当我单击按钮时,什么也没发生。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p id="counter">Loading button click data.</p>
<button id="buttonForScrapping">begin to scrap!</button>
<script>
function startScrap(){
jQuery.ajax({
type:'get',
url:'../../../scrapping.js',
data:[],
dataType:'json',
success: function(rs)
{},
failure : function(rs)
{}
});
}
</script>
</body>
</html>
This is the html code, and the js file is :
const {exec} = require('child_process');
const button = window.document.getElementById('buttonForScrapping');
button.addEventListener('click', function(e) {
exec('scrapy crawl address', (err, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});});
scrapy命令是python命令,所以我认为我需要进行ajax调用才能在服务器上运行它。
感谢您的帮助!
答案 0 :(得分:1)
要在服务器端运行代码,实际上您需要一个服务器来应答请求。看起来可能像这样:
const { exec } = require('child_process');
const app = require("express")(); // "npm install express" to install this dependency
app.get("/adress", (req, res) => { // server this path
exec('scrapy crawl address', (err, stdout, stderr) => {
res.json({ // respond to client if the command was done
stdout: "" + stdout,
stderr: "" + stderr
});
});
app.listen(80,() => console.log("server started"));
如果您使用node ./scrapping.js
启动脚本,则会在端口80上打开服务器,如果您访问http://localhost/adress则使用JSON进行响应
现在,每当在前端单击按钮时,您都必须向后端发起aJAX请求:
// "async" lets us write callbacks more gracefully
button.addEventListener('click', async function(e) {
try {
// fetch is like $.ajax, but its native
// 'await' is like a callback
const { stdout, stderr } = await fetch("http://localhost/adress").then(res => res.json());
console.log(stdout, stderr);
} catch(err) {
console.error("error occured while pinging server", err);
}
});
答案 1 :(得分:0)
要在单击按钮时执行JavaScript函数,可以使用sample like this。
首先,创建HTML按钮并使用onClick():
<button onClick="doSomething()">Button Text</button>
onClick()告诉浏览器执行JavaScript函数。现在,在JavaScript文件中创建函数:
function doSomething() {
alert('do something');
console.log('do something ')
}
这个简单的函数输出到控制台日志并发出警报,但是功能可能比这复杂得多。
要从HTML页面执行服务器端方法或python命令,您可能将需要更复杂的体系结构。
答案 2 :(得分:-1)
您必须像示例中一样将js文件包含到html文件中。
注意:确保在src
的{{1}}属性中js文件的路径正确。
script