Jquery 如何';是否在调用done()或fail()之间进行选择?

Jquery 如何';是否在调用done()或fail()之间进行选择?,jquery,callback,Jquery,Callback,我有一个脚本,它执行GET请求来验证管理员。 它调用一个python函数,该函数能够识别提供的凭据是否有效,并返回一个分别包含200或401代码的HTTPResponse。(返回HttpResponse(状态),其中状态设置正确) 如果管理员是否经过身份验证,脚本只会显示一个带有“Success”或“Failure”的警报,但即使我提供了错误的密码——python函数正确返回401代码——我也会收到“Success”警报,即它始终被称为done()回调 你能解释一下这种行为吗?脚本如何区分必须调

我有一个脚本,它执行GET请求来验证管理员。 它调用一个python函数,该函数能够识别提供的凭据是否有效,并返回一个分别包含200或401代码的HTTPResponse。(
返回HttpResponse(状态)
,其中状态设置正确)

如果管理员是否经过身份验证,脚本只会显示一个带有“Success”或“Failure”的警报,但即使我提供了错误的密码——python函数正确返回401代码——我也会收到“Success”警报,即它始终被称为
done()
回调

你能解释一下这种行为吗?脚本如何区分必须调用
done()
还是
fail()
回调

编辑:



你能写你的Ajax函数吗。有关更多信息,您是否已验证浏览器开发工具网络中的请求状态?也可以作为done()回调中的
jQXHR
对象的属性访问它。听起来并不像你所想的那样is@charlietfl您能更好地解释一下您的意思吗?您如何验证返回的响应代码是401?可以在dev tools network(F12)中看到实际的http状态。您能编写Ajax函数吗。有关更多信息,您是否已验证浏览器开发工具网络中的请求状态?也可以作为done()回调中的
jQXHR
对象的属性访问它。听起来并不像你所想的那样is@charlietfl您能更好地解释一下您的意思吗?您如何验证返回的响应代码是401?可以在dev tools network(F12)中查看实际的http状态
function logIn(){
var my_url="/admn/log/"+$("#password_field").val();
$.ajax({
type: "GET",
url: my_url
}).done(function(data) {
alert("Success!")
}).fail(function(data){
alert("Error!");
});
if pbkdf2_sha256.verify(kwargs["pwd"],expected_hash) == True:
#success
msg='Admin authenticated'
status=200 #Http success ok
else:
#failure   
msg='Authentication failed. Please check the password'
status=401 #Http client error unauthorized
credentials_file.close()
return HttpResponse(msg, status)