我是网络开发的新手,所以非常感谢任何帮助。
我需要向服务器发送纯文本,以便我可以将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}
中。这似乎工作正常。我是否正确地断定我们不能发布一个简单的字符串?
答案 0 :(得分:0)
您的文字变量的类型是什么?它应该是字段文本的对象,然后你可以用req.body.text ..
提取它根据您的更新,我认为您应该始终向服务器发送带有键和值的对象,然后在服务器端,您可以使用必要的密钥从请求正文中提取具体数据。