jQuery AJAX无法POST至Express /login端点问题求助
问题排查与解决方案
1. 核心拼写错误
你的jQuery代码构造请求数据时,把password拼写成了paswword(多了一个w):
const finalData = ({ "username": $('#name').val(), "paswword": $("#surname").val() // 错误拼写:paswword,正确应为password })
后端API读取的是data.password,这会导致服务器拿到undefined的密码值,直接引发查询失败。修正拼写后,数据就能正确传递到后端。
2. 添加错误回调用于调试
当前的$.ajax只处理了成功场景,没有错误处理逻辑,无法定位请求失败的具体原因。建议补充error回调:
$.ajax({ type: 'POST', url: 'http://localhost:3002/login', contentType: 'application/json', data: JSON.stringify(finalData), success: (data) => { console.log(data) }, error: (xhr, status, error) => { console.error('请求失败:', status, error); console.error('响应内容:', xhr.responseText); } });
3. 验证表单元素ID匹配
确认前端表单中,用户名输入框的id确实是name,密码输入框的id确实是surname——如果实际元素id和代码中的选择器不匹配,会导致无法获取正确的表单值。
4. 调整Express中间件顺序
你的服务器配置中,app.use(express.raw())放在了JSON解析中间件之后,可能干扰JSON格式请求的解析。建议调整中间件顺序,或直接移除不需要的express.raw():
// 调整后的中间件顺序 app.use(cors()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // app.use(express.raw()); // 若无需处理raw格式请求可移除
内容的提问来源于stack exchange,提问作者Souradip Roy
相关产品推荐
相关产品推荐

