我有一个外部表单,它向我的nuxt应用程序提交发布请求。我目前正在努力找出如何在我的nuxt页面中访问这些POST请求参数?
到目前为止,我找到了"asyncData"方法,但是当我尝试通过"params"对象访问提交的参数时,它总是"未定义"。我在这里做错了什么?
- "asyncData" nuxt reference
我的Nuxt页面中的示例代码,假设"电子邮件"是从外部提交的请求参数
export default {
asyncData({ params }) {
console.log('asyncData called...' + params.email);
return {email: params.email};
},
外部 HTML 表单
<body>
<form action="https://..." target="_blank" method="post">
<input name="email" class="input" type="text" placeholder="Email" maxlength="255"></input>
<input name="submit" class="btn" type="submit" value="Ok"></input>
</form>
</bod>
我找到了一种方法,如"asyncData"nuxt参考中所述,您可以将请求和响应对象传递给"asyncData({req,res}("调用。
这里有一个例子 - 假设"电子邮件"是 post 参数之一。 querystring 是 node 的一个模块.js允许您将请求正文解析为数组。
小评论 - 这似乎仅适用于nuxt页面级组件,但不适用于较低级别的组件
<script>
export default {
asyncData({ req, res }) {
if (process.server) {
const qs = require('querystring');
var body = '';
var temp = '';
while(temp = req.read()) {
body += temp;
}
var post = qs.parse(body);
return {data: post};
}
},
data() {
return {
data: '',
}
},
mounted() {
console.log(this.data['email']);
},
</script>
Nuxt.js无法自行处理这些事情。 https://nuxtjs.org/api/configuration-servermiddleware
在这种情况下,您应该实现自己的中间件。
asyncData
与处理入站 POST 数据无关。