解决jQuery Ajax成功回调中无法根据状态码显示提示的问题
问题原因分析
你代码的核心错误是混淆了接口返回的业务数据与HTTP响应状态:
- jQuery的
success回调仅会在HTTP响应状态码为2xx(含200)时触发,能进入这个函数就已经说明请求成功、状态码是200。 - 你判断的
response.status是接口返回的JSON数据字段,但https://jsonplaceholder.typicode.com/todos/1返回的todo对象里并没有status属性(可查看console.log输出的内容,只有userId、id、title、completed字段),因此这个条件永远不成立,alert无法触发。
修正后的代码
JavaScript 部分
$("#check").click(function() { $.ajax({ url: 'https://jsonplaceholder.typicode.com/todos/1', method: 'GET', dataType: 'json', success: function(response) { console.log(response); // 进入success回调即代表HTTP状态码为200,直接触发提示 alert('getting into success'); }, error: function(err) { alert('请求失败:' + err.statusText); } }) })
HTML 部分(无需修改)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.6.4.js" integrity="sha256-a9jBBRygX1Bh5lt8GZjXDzyOB+bWve9EiO7tROUtj/E=" crossorigin="anonymous"></script> </head> <body> <button id="check" value="check">Check</button> </body> </html>
补充说明
如果确实需要在success回调中获取HTTP响应状态码,可以使用回调的第三个参数(jqXHR对象):
success: function(response, textStatus, jqXHR) { console.log('HTTP状态码:', jqXHR.status); // 此处会输出200 alert('getting into success'); }
内容的提问来源于stack exchange,提问作者Chinni Ch
相关产品推荐
相关产品推荐

