【发布时间】:2015-11-12 02:35:20
【问题描述】:
我正在尝试制作一个表格,该表格采用电子邮件地址并将交易电子邮件发回。我在 vanilla JavaScript 中使用 XMLHttpRequest 向服务器发送数据,但是当我查看从 index.html 发送的数据时,它只是服务器端的一个空对象。
在后端,我使用的是 Node 和 Express 以及 Nodemailer。 Nodemailer 工作正常。我一直在试图弄清楚为什么查询对象中没有任何内容。
// Here is server.js
var express = require('express');
var nodemailer = require('nodemailer');
var app = express();
// Send index.html
app.get('/', function(request, response) {
response.sendfile('index.html');
});
// Where I should receive data from JS written in index.html
app.post('/send', function(req, res) {
var mailOptions = {
to: req.query.to,
subject: req.query.subject,
text: req.query.text
}
});
<!-- Here is my index.html with some JS in it -->
<div>
<input id="to" type="text" placeholder="Email" />
<input id="subject" type="text" placeholder="subject" />
<textarea id="content" cols="20" rows="2" placeholder="Write something"></textarea>
<button id="submit">Submit</button>
</div>
<script>
// When #submit is clicked it invokes a function to collect values and then makes a XMLHttpRequest like bellow
data = {to: to, subject: subject, text: text};
var request = new XMLHttpRequest();
request.open('GET', 'http://localhost:3000/send', true);
request.send(data);
}
</script>
【问题讨论】:
-
您的 XMLHttpRequest 发送了一个“GET”请求,但您的快速服务器期待一个“POST”请求
-
@PHPglue 他提出的代码是他实际代码的 sn-p 因此为什么它是未定义的
-
没有使用
.send()发送GET,只使用.open()URL。如果要发送数据,请使用POST或将数据附加到 URL,例如:?to=val1&subject=val2&text=val3。要么使用jQuery,然后你就可以传递那个数据对象。 -
真的很抱歉这个错误。我不小心离开了 .post 而不是 .get,因为我在不同的情况下尝试了这两对。
标签: javascript node.js express xmlhttprequest