gpt4 book ai didi

javascript - AJAX成功:function always returning success (and 200 status code),错误函数未触发

转载 作者:行者123 更新时间:2023-12-03 10:14:34 24 4
gpt4 key购买 nike

对于 AJAX 调用,我还是个初学者,所以提前道歉,因为我陷入了困境,而且我不知道为什么!

总之,我有自己的服务器,它显示登录页面。使用路由器,我确定表单中输入的详细信息是否正确,以便用户进入主页。我的登录按钮也链接到 AJAX,由此我添加了一个事件处理程序,该处理程序现在[应该]根据路由器中的检查结果显示警报框。

所以..我的问题是为每个响应显示正确的警报框。 “成功”警报框始终显示为状态代码 200。错误代码:甚至未到达函数。

我有一个路由器文件来服务页面并处理登录检查,一个包含登录凭据、登录 html 页面和登录 js 文件的正确组合的 js 文件。我正在使用 javascript 和 AJAX 以及 google chrome 进行调试。我认为您需要解决这个问题的一些代码如下。如果您还需要更多,请询问。

路由器登录检查:

app.post('/api/login/', function (req, res) {        
console.log(req.body);
var emailLog = req.body.email;
var passwordLog = req.body.password;
validUser = false;

// Search user data
for (var x in USERS.users) {
if (emailLog === USERS.users[x].email && passwordLog === USERS.users[x].password) {
validUser = true;
break;
}

}
if (validUser === true) {
console.log("Log in successful");
res.send('Success');

} else {

console.log("Incorrect combination");
res.send('Error');
}

});

Login.js该文件正在执行 AJAX 操作:

$(document).ready(function(){
console.log("in doc ready");

$("#submit_button").click(function(e){
console.log("in event handler");

e.preventDefault();

$.ajax({type: "POST",
url: "/api/login",
data: { email: $("#email").val(),password: $("#password").val() },


success:function(data, textStatus, xhr){
alert("Successful");
console.log(xhr.status);
console.log(data);

},
error:function(data){

alert("Unsuccessful");
//$("#errorMessage").html("Incorrect email or password - Try again");

}

});
});
});

救命啊!我已经浏览了这里的几页 AJAX 问题,但没有一个对我有用。最终我想将错误文本添加到登录页面上的 div 中,但现在我很乐意只显示正确警报!!! ...为什么即使我输入了错误的组合,它总是返回成功警报框?对于修复此错误的正确方向有什么建议或指示吗?

更新这是开发人员工具的控制台中显示的正确组合和错误组合的内容:

login.js:2 in doc ready

login.js:5 in event handler
login.js:18 200
login.js:20 Success

login.js:5 in event handler
login.js:18 200
login.js:20 Error

这是在 cmd 窗口中:

Example app listening at http://:::3000
{ email: 'a@a.com', password: 'a' }
a@a.com
a
Valid user : true
Log in successful

{ email: 'a@a.com', password: 't' }
a@a.com
t
Valid user : false
Incorrect log in combination - re-directing back to login page

最佳答案

就AJAX而言,只要返回状态“200”,就视为“成功”,并且不会触发错误函数。它与您作为响应发送的内容无关,它只是 http 状态代码。

所以调整你的成功函数:

     success:function(data, textStatus, xhr){

console.log(xhr.status);
console.log(data);

if ( data == "Success" ) // thats what you send in case of a proper login
alert("Successful")

},

关于javascript - AJAX成功:function always returning success (and 200 status code),错误函数未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29945726/

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