gpt4 book ai didi

javascript - jQuery 忽略来自 Express 的状态码

转载 作者:行者123 更新时间:2023-11-30 17:09:13 25 4
gpt4 key购买 nike

我正在制作一个必须使用 AJAX 验证表单的应用程序。没什么特别的。当触发表单提交时,我将发布到 Node.js 服务器上的 URL 并使用 Express 进行路由。如果数据未通过所有验证要求,我将发送状态代码 400,如下所示:

app.post('/create', checkAuth, function (req,res)
{
var errors = new Errors();

if (req.body['game-name'].length < 3 || req.body['game-name'].length > 15)
{
res.send({
msg: 'Game name must be between 3 and 15 characters.'
}).status(500).end();
}
else
{
GameModel.find({id: req.body.roomname}, function (err,result)
{
if (result.length !== 0)
{
errors.add('A game with that name already exists.');
}

//Some more validation

if (errors.get().length > 0)
{
res.status(400).send({
msg: errors.get()[0]
}).end();

return;
}
else
{
var data = new GameModel({
roomname: req.body['roomname'],
owner: req.session.user,
id: req.body['roomname'].toLowerCase(),
config: {
rounds: req.body['rounds'],
timeLimit: req.body['time-limit'],
password: req.body['password'],
maxplayers: req.body['players'],
words: words
},
finished: false,
members:
[
req.session.user
]
});

data.save(function (err, game)
{
if (err) {
console.log(err);
res.send({
msg: 'Something funky happened with our servers.'
}).status(500).end();
}
else
{
res.send({
msg: 'All good!'
}).status(200).end();
}
});
}
});
}
});

在客户端,我有以下代码:

$.ajax({
type: "POST",
url: "/someURL",
data: $("form").serialize(),
statusCode:
{
200: function (data)
{
//All good.
},
400: function (data)
{
//Uh oh, an error.
}
}
});

奇怪的是,每当我发送 400 错误时,jQuery 都会调用 200 函数。我相信这是因为我发送了一个对象和状态代码。我该如何解决这个问题?

最佳答案

首先猜测您需要在 if block 内的 express 代码中使用 return; 语句。我敢打赌错误代码正在运行,然后成功代码和 statusCode/body 的最后一个值被发送到浏览器。

关于javascript - jQuery 忽略来自 Express 的状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27348530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com