首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POST方法返回客户端和服务器中的空对象。

POST方法返回客户端和服务器中的空对象。
EN

Stack Overflow用户
提问于 2020-07-22 16:02:17
回答 2查看 392关注 0票数 0

因此,我正在构建一个食谱搜索引擎,我想把用户选择的类别转移到服务器上,这样我就可以在API调用中使用它。下面是一些代码:

客户端

代码语言:javascript
复制
function getRecipes(category){
    const categorySearch = category.alt;
    let data = {
        categoryChoice: categorySearch
    }
    console.log(data);
    let options = {
        method: 'POST',
        headers: {
            'Content-type': 'text/plain'
        },
        body: JSON.stringify(data)
    }
    const promise = fetch('/data', options);
    console.log(promise);
}

服务器端

代码语言:javascript
复制
const express = require('express');
const app = express();
const fetch = require('node-fetch');
require('dotenv').config();
const API_KEY = process.env.API_KEY;
const port = process.env.PORT || 3000;
app.listen(port, () => console.log('listening at 3000'));
app.use(express.static('public'));
app.use(express.json({ limit: "1mb"}));

app.post('/data', (request, response) => {
    let data = request.body;
    console.log(data);
    response = "Got data";
    console.log(response);
})

categorySearch和数据变量肯定得到了它应该得到的东西,我已经登录了,它运行良好。那么,无论我是在客户端记录承诺,还是在服务器端记录数据,我只得到{},有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-22 23:41:28

使用JSON内容类型。后端端应该返回数据:

代码语言:javascript
复制
app.post('/data', (request, response) => {
  let data = request.body;
  let gotData;
  if(data.categoryChoice == "option1")
    gotData = {id:1, label:"val 1", q:data.categoryChoice};
  else
    gotData = {id:2, label:"val 123", q:data.categoryChoice};

  response.json(gotData);
});

客户端:

代码语言:javascript
复制
let data = { categoryChoice: "option1" };
let options = {
    method: 'POST',
    headers: {
        "Content-type": "application/json; charset=UTF-8"
    },
    body: JSON.stringify(data)
}
const promise = fetch('/data', options);
promise.then(response => {
    if (!response.ok) {
        console.error(response);
    } else {
        return response.json();
    }
}).then(result => {
    console.log(result);
});
票数 1
EN

Stack Overflow用户

发布于 2020-07-22 16:05:46

  1. 您的后端部件应该返回一个响应,以便按您预期的方式工作。

  1. 您只处理一个POST请求,但也需要一个get请求。

代码语言:javascript
复制
app.get('/data', (request,response) => {
    return response.json({
    // JSON data here
    })
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63038451

复制
相关文章

相似问题

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