Node.js 使用 AJAX 向后端发送数据

新手上路,请多包涵

我是 AJAX 的新手,对于潜在的误解深表歉意,但我还没有完全解决这个问题。

我正在尝试一件简单的事情。我有一个 server.js 文件,这基本上是我的后端。然后我有一个 index.html 和一个 script.js 。仅此而已,这是一个非常基本的设置。现在,在我的 script.js 上,我得到了一些数据(邮件地址)。现在我想将该数据发送到我的后端(发送到 server.js )以在那里使用它。我怎样才能做到这一点?

我已经找到了一些关于使用 node.js 的 AJAX 的帖子,但我不明白,尤其是不知道在我的后端接收它的地方。顺便说一下,我正在为服务器使用 express。

我的 script.js 是:

 $.ajax({
            type: "POST",
            url: "server.js",
            data: { mail: mail },
            success: function(data) {
            },
            error: function(jqXHR, textStatus, err) {
                alert('text status '+textStatus+', err '+err)
            }
        });

到目前为止?我现在如何才能收到我的 server.js 中的信息?

到目前为止没有太多内容,只是:

 var express = require('express');

var app = express();
var server = app.listen(3000);

app.use(express.static('public'));

谢谢你的帮助 :)

原文由 nameless 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 439
2 个回答

注意:这是在使用代码更新问题之前编写的,因此我在此处用作示例的字段名称和端口号可能需要使用正确的值进行更新。

客户端代码 - jQuery 示例:

 $.post('/email', { address: 'xxx@example.com' });

(这可以采用可选的回调并返回可用于添加成功/错误处理程序的承诺)

服务器端代码 - Express 示例:

 const express = require('express');
const bodyParser = require('body-parser');

const dir = path.join(__dirname, 'public');

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/email', (req, res) => {
  // you have address available in req.body:
  console.log(req.body.address);
  // always send a response:
  res.json({ ok: true });
});

app.use(express.static(dir));

app.listen(4443, () => console.log('Listening on http://localhost:4443/'));

这假定您的静态文件(HTML、客户端 JavaScript、CSS)位于 public 目录中,相对于您的 server.js 文件。

有关 JSON/表单编码问题的背景,请参阅此内容:

有关提供静态文件的背景,请参阅此内容:

原文由 rsp 发布,翻译遵循 CC BY-SA 3.0 许可协议

首先,您需要在服务器运行时访问一个有效的路由。您可以通过快递在 server.js 中执行此操作。

 var express = require('express');
var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser.json());
app.use(express.static('public'));

app.post('/mail', function(req, res) {
  var body = req.body;

  console.log('email', body.email);

  res.json({ message: 'I got the email!' });
});

var server = app.listen(3000);

请注意,我引入了一个快速中间件,它将解析 JSON 的正文并使其在 — 下的 req.body req 对象上可用。您需要使用 npm install --save body-parser 安装此依赖项。

然后,您需要从前端向该 URL 发送一个 POST 请求。

 $.ajax({
    type: "POST",
    url: "/mail",
    data: { mail: mail },
    success: function(data) {
      console.log('message', data.message);
    },
    error: function(jqXHR, textStatus, err) {
        alert('text status '+textStatus+', err '+err)
    }
});

现在,如果您提交一封电子邮件,您应该会在终端中看到一个显示电子邮件的日志,并在浏览器中的开发人员控制台中看到一个显示消息“我收到了电子邮件!”的日志。

原文由 searsaw 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题