如何使用axios

时间:2017-11-02 04:41:33

标签: javascript node.js axios

我是网络开发的新手,所以非常感谢任何帮助。

我需要向服务器发送纯文本,以便我可以将MathJax应用于它。

sendForTeX (text) {
  console.log('Sending ' + text + ' to be converted to LaTeX...')
  axios.post('/tolatex', text)
    .then(function (response) {
      console.log(response)
    })
    .catch(function (error) {
      console.log(error)
    })
}

在服务器端,首先我使用body-parser

app.use(bodyParser.urlencoded({ extended: false }))

然后,我定义了一个中间件来排版文本。

function toLatex (req, res, next) {
  console.log(req.body)
  MathJax.typeset({
    math: req.body,
    format: 'TeX',
    svg: true,
    mml:false,
  }, function (data) {
    if (!data.errors) {
      req.LaTeX = data
      return next()
    } else {
      console.log('BRRRRUUU')
    }
  })
}

最后,我通过发回新数据来处理发布请求

app.post('/tolatex', toLatex, function (req, res) {
  res.send(req.LaTeX)
})

阅读了一些文献后,我的理解是我从客户端发送的文本将在req.body中,但console.log(req.body)的输出是text: ''形式的对象,其中text是我从客户端发送的文本。然后,节点立即崩溃并显示消息TypeError: Cannot convert object to primitive value

我真的很感激这里的一些指导。

更新:有些人会引导我相信

app.use(bodyParser.urlencoded({ extended: false }))

应替换为

var jsonParser = bodyParser.json()
app.use(jsonParser)

并且纯文本应该包含在对象e.g. {plaintext: text}中。这似乎工作正常。我是否正确地断定我们不能发布一个简单的字符串?

1 个答案:

答案 0 :(得分:0)

您的文字变量的类型是什么?它应该是字段文本的对象,然后你可以用req.body.text ..

提取它

根据您的更新,我认为您应该始终向服务器发送带有键和值的对象,然后在服务器端,您可以使用必要的密钥从请求正文中提取具体数据。