这是我的代码,由React File和Js File组成。
// React File //
...
searchdata = this.state.value;
console.log(`Search Data : ${searchdata}`);
axios.post(BASE_URL + '/nameSearch',searchdata) //
...
// Js File //
...
app.post(('/nameSearch'),function(req,res)
{
console.log(req.body);
datasearch = req.body;
console.log(`This name search is :`+datasearch);
});
...
错误: 未定义
名称搜索为:undefined
任何解决方案吗?
答案 0 :(得分:1)
首先,从('/ nameSearch')删除换行括号,使其成为'/ nameSearch'。 然后,为了访问nodejs中的请求主体,您需要使用主体解析器。 因此,在您的nodejs文件中添加以下代码:
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
也不要忘记通过以下操作在项目中安装body-parser:
npm i --s body-parser
在项目的根目录中。
希望这会有所帮助!
答案 1 :(得分:-1)
尝试删除()
const searchdata = this.state.value;
console.log(`Search Data : ${searchdata}`);
axios.post(BASE_URL + '/nameSearch',searchdata)
app.post('/nameSearch',function(req,res){
console.log(req.body);
const datasearch = req.body;
console.log(`This name search is :`, datasearch);
})
答案 2 :(得分:-1)
如果您在Node.js服务器上使用Express,则要处理该请求,需要使它能够解析帖子数据的正文。
如果您还没有这样做:
在处理任何请求(Express v4.16及更高版本)之前将其包括在内
app.use(express.json())
答案 3 :(得分:-1)
谢谢大家!
这是我的最新代码。
// React File
...
searchdata = this.state.value;
console.log(`Data Search : ${searchdata }`);
const datasearch = {
searchdata:this.state.value
}
axios.post(BASE_URL + '/nameSearch',datasearch)
...
//
// Js File
app.post('/nameSearch',function(req,res){
console.log(req.body.searchdata);
datasearch = req.body.searchdata;
console.log(`This name search is :`, datasearch);
})
...
//
有效! react文本框的输出将显示在nodejs控制台中。
谢谢:)