React应用无法向Node.js服务器传递搜索参数,变量未定义报错
问题解决:GET请求下参数未定义的原因及修复
核心问题:GET请求没有请求体(body),你还在从req.body里取name参数,自然会显示未定义——GET的参数都是通过URL查询字符串传递的,得从req.query里拿。
修复步骤:
- 修改Node.js端代码,从
req.query获取参数
把原来的let {name} = req.body替换成let {name} = req.query,同时建议增加参数校验避免报错:
app.get('/search/', (req, res) => { // 从URL查询字符串中获取name参数 let {name} = req.query; // 校验参数是否存在,防止后续拼接出错 if (!name) { return res.json({error: '请传入name参数'}); } var Op = name + '%'; const q = "SELECT * FROM taric where Description LIKE ? "; con.query(q, [Op], (err, search) => { if (err) { console.log(err); return res.json(err); } console.log(search); return res.json(search); }); });
- 确认前端axios GET请求的传参方式
GET请求要把参数放在params字段里,示例:
// 假设searchValue是搜索框输入的内容 axios.get('/search/', { params: { name: searchValue } }) .then(res => { console.log('查询结果:', res.data); }) .catch(err => { console.error('请求出错:', err); });
额外提醒:
- GET参数会暴露在URL里,别用来传敏感数据
- 一定要做参数校验,不然如果用户没传name,会导致SQL查询出现
undefined%这类无效值,引发错误
内容的提问来源于stack exchange,提问作者manish
相关产品推荐
相关产品推荐

