javascript - 无法获得 express.js 响应
问题描述
我试图根据其内容以不同的方式处理服务器响应,但我什至无法运行与响应数据无关的东西。
这是我在 jQuery 中的请求:
function Register() {
var form = $('#signup-form')
$.post("http://localhost:3000/register", form.serialize(), (data) => console.log("1"))
.done((data) => console.log("2"))
.fail((data) => console.log("3"))
.always((data) => console.log("4"));
}
在快递:
rota.post('/register', (req, res) => {
const name = req.body.name;
const age = req.body.age;
const pass = sha256(req.body.pass);
const request = new sql.Request();
request.query(`SELECT CAST(CASE WHEN EXISTS(SELECT * FROM Usuario WHERE username = '${name}') THEN 1 ELSE 0 END AS BIT) AS re`).then(
result => {
if (result.recordset[0].re == true) {
console.log("usuário já registrado");
res.send("1");
} else {
request.query(`INSERT INTO Usuario(username, userage, userpass) VALUES('${name}', '${age}', '${pass}')`);
}
}).catch(result => {})
})
我究竟做错了什么?
解决方案
发回状态以完成请求,否则它将保持打开状态。在你的catch 块中插入一个400状态响应,让前端知道请求失败并进入函数:fail()
request.query(`SELECT CAST(CASE WHEN EXISTS(SELECT * FROM Usuario WHERE username = '${name}') THEN 1 ELSE 0 END AS BIT) AS re`).then(
result => {
if (result.recordset[0].re == true) {
console.log("usuário já registrado");
res.send("1");
} else {
request.query(`INSERT INTO Usuario(username, userage, userpass) VALUES('${name}', '${age}', '${pass}')`);
res.status(200).send(); // here add a status of 200 to signal success
}
}).catch(result => {
res.status(400).send(); // send also a 400 status response to signal failure
})
})
推荐阅读
- javascript - 替换 Discord.JS 中的某些字符
- arrays - 在 C 中定义类型时对指针语法感到困惑
- deployment - Next.js 和 aws-amplify 与 aws-exports.js 的部署问题
- javascript - 如果父节点对树来说是未知的,是否可以加载,然后选择一个子节点?
- kubernetes - Kubernetes 扩展不够快(对于 K8 1.17 或更低版本)
- django - 如何通过一个查询Django从两个表中获取数据
- mysql - 与多个过滤器结合使用时,Django order_by('-id') 非常慢
- sql-server - 具有运行价值的股票钱包和重置的平均购买价格
- python - 优化修改列表的循环
- java - 将两个没有值的 json 响应与 Jackson 进行比较