【问题标题】:Unable to access data inside a string (i.e. [ object Object ]) that was originally sent as a JSON object无法访问最初作为 JSON 对象发送的字符串(即 [object Object])中的数据
【发布时间】:2018-08-31 08:12:29
【问题描述】:

我正在使用 axios 将 JSON 对象作为参数发送到我的 api。在发布请求被触发之前,我的数据以 JSON 对象的形式开始。在服务器端,当我console.log(req.params) 时,数据是这样返回的

[object Object]

当我使用typeof 时,它返回了一个字符串。所以然后我去使用JSON.parse()。但是,当我使用它时,它返回了这样的错误

SyntaxError: 位置 1 处 JSON 中的意外标记 o

我寻找解决方案,但我尝试的任何方法似乎都不起作用。现在我在想我将数据错误地发送到服务器。

这是我使用 axios 发布的请求:

createMedia: async function(mediaData) {
    console.log("SAVING MEDIA OBJECT");
        console.log(typeof mediaData)
        let json = await axios.post(`http://localhost:3001/api/media/new/${mediaData}`) 
    return json;
}

有什么想法可以解决这个问题吗?

【问题讨论】:

  • 请添加axios 代码段,因为它可能是您的麻烦源
  • @charmeleon 刚刚更新了我的帖子

标签: json node.js express axios


【解决方案1】:

您需要使用 axios 更新您的代码,以便在请求正文中提供 mediaData 而不是 URL:

createMedia: async function(mediaData) {

   console.log("SAVING MEDIA OBJECT");

    console.log(typeof mediaData)
    let json = await axios.post(`http://localhost:3001/api/media/new/`, mediaData) 

    return json;
}

在后端(假设您在此处使用express),您需要将您的应用程序配置为使用bodyParser

var express = require('express')
  , app = express.createServer();

app.use(express.bodyParser());

然后在您的控制器中将您的console.log(req.params) 更新为console.log(req.body);然后重启你的节点服务器

【讨论】:

    猜你喜欢
    • 2018-06-18
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    相关资源
    最近更新 更多