通过html按钮调用javascript函数

时间:2019-04-02 12:13:37

标签: javascript ajax

我有一个简单的问题,已经问过很多遍了,但是我解决不了。 我只想从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调用才能在服务器上运行它。

感谢您的帮助!

3 个答案:

答案 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