从 HTML 调用节点请求

Calling node request from HTML

本文关键字:请求 节点 调用 HTML      更新时间:2023-09-26

我是node的新手,正在练习使用request模块发出http请求。在我的脚本中,当用户按下按钮时,我希望它的回调函数发出请求,该请求从网页中获取 HTML 并对其进行过滤以获取数据数组。

我的服务器请求自行工作,但是当我尝试将其与HTML结合使用时,似乎没有任何反应。我的 HTML 看起来像这样:

<!DOCTYPE html>
<html>
<head>
  <link type="text/css" rel="stylesheet" href="test1.css" />
  <script src = "posts.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body>
  <p id = "myText">Hello, this is dog</p>
  <button onclick="getPosts()">Get Posts</button>
</body>
</html>

和帖子.js是这样的:

var request = require('request');
function getPosts(){
    alert('Hello');
    var matches = [];
    request('https://www.reddit.com/r/TagPro/top/?sort=top&t=all', function (error, response, body) {
        // Handle errors properly.
        if (error || response.statusCode !== 200) {
            return res.writeHead(error ? 500 : response.statusCode);
        }
        // Accumulate the matches.
        var re = /tabindex="1" >(.+?)</g;
        var match;
        while (match = re.exec(body)) {
            matches[matches.length] = match[1];
        }
        $("#myText").text(JSON.stringify(matches));
    });
}

按下按钮时,"您好"会收到警报,但之后似乎没有任何反应。这是将节点与前端链接的正确方法还是我以错误的方式接近它?

如果你在浏览器中运行它,那么问题是你不能在没有一些额外的工具的情况下在浏览器中使用 Node 包。

如果您检查控制台,您可能会看到有关"要求"正在undefined的内容。

您应该阅读如何使用Webpack(或Browserify)等工具使您的Node包在浏览器中可用。

如果要保持简单,请不要将 Node 请求库用于客户端(浏览器)代码。只需阅读如何使用jQuery或本机XMLHttpRequest API发出常规Ajax请求。

您可以将request呼叫替换为类似

$.get('http://someurl.com', function (data) { // stuff });