首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fetch将跨源JSON数据发布到Express后端

使用fetch将跨源JSON数据发布到Express后端
EN

Stack Overflow用户
提问于 2018-09-14 05:15:30
回答 1查看 2K关注 0票数 0

我试图使用Fetch从表单中发布一些JSON数据,并记录来自Express服务器的响应,这应该是一个简单的JSON响应,包含已发布的表单值,但我只在控制台中接收一个空对象。

JavaScript和JSFiddle链路可以从这个JSFiddle链路中执行。

如何从服务器接收填充的JSON对象响应?

代码语言:javascript
复制
<form id="myForm">
    <input type="text" placeholder="Enter First Name" name="firstName" />
    <input type="text" placeholder="Enter Last Name" name="lastName" />
    <input type="submit" value="SUBMIT" />
</form>

JavaScript

代码语言:javascript
复制
const form = document.getElementById("myForm");

form.addEventListener("submit", (e) => {

    e.preventDefault();

    fetch("http://localhost:5000/form-post", {
            method: "POST",
            mode: "cors",
            body: {
                firstName: e.target.firstName.value,
                lastName: e.target.lastName.value
            } 
        })
        .then((res) => res.json())
        .then((data) => console.log(data));
});

快递服务器

代码语言:javascript
复制
const express = require("express");
const app = express();

const cors = (req, res, next) => {

    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET, PUT, PATCH, POST, DELETE");
    res.header("Access-Control-Allow-Headers", "Origin, Content-Type");

    next();
};

app.use(cors);
app.use(express.json());

app.post("/form-post", (req, res) => {

    res
        .status(200)
        .json({
            First_Name: req.body.firstName,
            Last_Name: req.body.lastName
        });

});

app.listen(5000, () => console.log("Server started on port 5000..."));

编辑:--它在邮递员(附带的屏幕截图)中工作得很好,但它似乎不适用于Fetch。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-14 06:14:57

您不能POST一个普通的javascript对象。

但是,请使用Content-type列表检查RFC 1341中定义的所有可能的mime类型值。

根据MDN

获取正文数据类型必须匹配“内容-类型”标头

试一试这段代码。

代码语言:javascript
复制
const form = document.getElementById("myForm");

form.addEventListener("submit", (e) => {
  e.preventDefault();

  var data = {
    firstName: e.target.firstName.value,
    lastName: e.target.lastName.value
  }

  fetch("http://localhost:5000/form-post", {
      method: "POST",
      mode: "cors",
      headers: {
        "Content-Type": "application/json; charset=utf-8",
      },
      body: JSON.stringify(data)
    })
    .then((res) => res.json())
    .then((data) => console.log(data));
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52325363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档