这是反应获取:
var json = { json: JSON.stringify({ 答:1, 乙: 2 }), 延迟:3 }; fetch('/saveInfo', { 方法:"发布", 标头:{ "接受": "应用程序/json, 文本/纯文本, */*", "内容类型": "应用程序/json" }, body: JSON.stringify(json.json) }) .then(function (response) { 返回响应.json(); }) .then(function (result) { 警报(结果); console.log("文件已保存! }) .catch (函数(错误){ console.log("请求失败"); });
这是节点:
<pre>
var express = require('express');
module.exports = function(app) {
var router = express.Router();
router.get('/', function (req, res) {
console.log('from node');
console.log(req);
res.json({status: 'UP'});
});
app.use("/saveInfo", router);
}
</pre>
上面的代码不适用于获取的第二个参数。
但是当我在没有第二个参数的情况下执行它时,如下所示:
fetch('/saveInfo')
.then(function (response) {
return response.json();
})
.then(function (result) {
alert(result);
console.log("The file was saved!");
})
.catch (function (error) {
console.log('Request failed');
});
工作正常,能够与节点程序通信。
任何人都可以帮助我解决这个问题吗?我想向节点程序发送反应的 UI 表单状态。
你也需要add a handler for the POST requests
。
在第一种情况下的 fetch 方法中,您已将方法类型指定为 POST,但节点对此没有任何处理。
但是,当您不给出第二个参数时,它被视为GET请求并被router.get拦截。
只需在节点中添加以下内容(在 app.use 行之前):
router.post("/", function (req, res) {
console.log('from node');
console.log(req);
res.json({status: 'UP'});
});
它将使节点能够侦听 POST 请求。
编辑:要访问 router.post 中的后请求正文参数,您需要body-parser
包。在初始化高速路由器之前安装此软件包并添加以下两行:
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
阅读 http://jilles.me/express-routing-the-beginners-guide/以获取详细说明