【问题标题】:How do I send data to client using Node with Express?如何使用带有 Express 的 Node 向客户端发送数据?
【发布时间】:2018-05-14 01:18:00
【问题描述】:

我是 Web 开发的新手,不知道如何在提供 HTML 页面的同时将数据从 Node 服务器发送到客户端。我知道 res.send() 发送数据,但如果不更改客户端显示,我就无法使用它。这是我正在尝试做的一些代码(但不起作用)

服务器:

app.get('/home', function (req, res) {
    res.send("String with info I want in HTML");
    res.sendFile(__dirname + '/home.html');
});

客户:

<script>
        var xhttp = new XMLHttpRequest();
        alert(xhttp.responseText); //Using alert to check if I received the info I wanted
</script>

【问题讨论】:

  • 如果您使用车把视图引擎,您可以在 res.render('home', {myText:'your string here'}) 在模板中添加一个占位符时执行此操作 {{myText}}
  • 首先,您需要从客户端发送正确的 Ajax 请求。您显示的代码只是 ajax 请求的一小部分。网络上有数以千计的地方,您可以在其中阅读如何从浏览器 Javascript 进行 ajax 调用。然后,您只需在服务器中为您的 ajax 调用请求的 URL 创建一个路由并发送一个响应(而不是您显示的两个)。该响应将返回给 ajax 调用者,他们将在他们的 Javascript 中接收它,并可以决定如何处理它。就是这样。没有客户端显示更改。 Ajax 调用不会自行更改显示。

标签: javascript html node.js express web-development-server


【解决方案1】:

我知道 res.send() 会发送数据,但如果不更改客户端显示,我就无法使用它。

你可以。您只需要让客户以正确的方式请求数据。

如果客户端代码要求将 URL 显示为新页面,那么您将更改显示。所以不要那样做。使用XMLHttpRequest

var xhttp = new XMLHttpRequest();
alert(xhttp.responseText); //Using alert to check if I received the info I wanted

你需要:

  1. 创建 XHR 对象
  2. 请求网址
  3. 发送请求
  4. 等待回复
  5. 查看响应

您已跳过第 2、3 和 4 步!

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "/home");
xhttp.addEventListener("load", function () { alert(this.responseText); });
xhttp.send();

【讨论】:

    【解决方案2】:

    res.render() 函数完成了这项工作!

    res.render("your html page" , { variable : "String with info you want to send." })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 2019-06-28
      • 2019-10-23
      • 2012-02-22
      相关资源
      最近更新 更多