Jquery ajax调用无法从API检测404

Jquery ajax调用无法从API检测404,jquery,Jquery,我正在使用GitHub rest API,我能够在输入字段中输入用户名后立即获得用户名的数据。但是ajax调用无法确定指向用户的链接是否存在 我可以在控制台上看到一条404(未找到)消息,但是#resultdiv永远不会用文本No users更新 $('#username')。在('keyup',function()上{ var name=$('#username').val(), requri=https://api.github.com/users/“+姓名; $.ajax({ url:r

我正在使用GitHub rest API,我能够在输入字段中输入用户名后立即获得用户名的数据。但是ajax调用无法确定指向用户的链接是否存在

我可以在控制台上看到一条404(未找到)消息,但是
#result
div永远不会用文本
No users
更新

$('#username')。在('keyup',function()上{
var name=$('#username').val(),
requri=https://api.github.com/users/“+姓名;
$.ajax({
url:requri,
数据类型:“json”,
成功:功能(数据){
如果(data.message==“未找到”){
$(“#结果”).html(“无用户”);
}否则{
$(“#结果”).html(“用户找到”);
}
}
});
});


问题是因为404响应没有进入
成功处理程序。它进入
错误
处理程序-假设您定义了一个

但是,在这种情况下,由于您专门查找404错误以指示Github用户不存在,因此可以使用
statusCode
属性为特定响应代码放置处理程序函数:

$('#username')。在('keyup',function()上{
var name=$('#username').val(),
requri=https://api.github.com/users/“+编码元件(名称);
$.ajax({
url:requri,
数据类型:“json”,
成功:功能(数据){
$(“#结果”).html(“用户找到”);
},
错误:函数(x、s、e){
console.log('出现问题。请在此处处理错误…);
},
状态代码:{
404:函数(){
$(“#结果”).html(“未找到用户”);
}
}
});
});


问题是因为404响应没有进入
成功处理程序。它进入
错误
处理程序-假设您定义了一个

但是,在这种情况下,由于您专门查找404错误以指示Github用户不存在,因此可以使用
statusCode
属性为特定响应代码放置处理程序函数:

$('#username')。在('keyup',function()上{
var name=$('#username').val(),
requri=https://api.github.com/users/“+编码元件(名称);
$.ajax({
url:requri,
数据类型:“json”,
成功:功能(数据){
$(“#结果”).html(“用户找到”);
},
错误:函数(x、s、e){
console.log('出现问题。请在此处处理错误…);
},
状态代码:{
404:函数(){
$(“#结果”).html(“未找到用户”);
}
}
});
});


404是一个错误代码,因此xhr将触发“失败”处理程序,而不是“成功”处理程序

$.ajax({
url:requri,
数据类型:“json”,
成功:功能(数据){
$(“#结果”).html(“用户找到”);
},
错误:函数(数据){
$(“#结果”).html(“无用户”);
}
});

404是一个错误代码,因此xhr将触发“失败”处理程序,而不是“成功”处理程序

$.ajax({
url:requri,
数据类型:“json”,
成功:功能(数据){
$(“#结果”).html(“用户找到”);
},
错误:函数(数据){
$(“#结果”).html(“无用户”);
}
});

假设我想处理其他一些错误代码,那么我必须在statusCode下创建一个回调函数??如果你想单独处理每个statusCode,是的。不过,您可以在
错误处理程序中只使用一个“catch all”。这完全取决于您希望它如何工作。现在,
#result
中的文本正在更改,但控制台中仍会显示红色消息。这会有问题吗?不,一点也不会。假设我想处理其他一些错误代码,那么我必须在状态代码下创建一个回调函数??如果你想单独处理每个状态代码,是的。不过,您可以在
错误处理程序中只使用一个“catch all”。这完全取决于您希望它如何工作。现在,
#result
中的文本正在更改,但控制台中仍会显示红色消息。那会有问题吗?不,一点也不会。