如何通过jQuery AJAX获取API响应的错误码及错误信息?
解决AJAX请求失败时获取错误信息的问题
你需要给jQuery AJAX请求添加错误处理回调,通过jqXHR对象获取状态码和响应内容,再解析成JSON拿到错误信息。修改后的代码如下:
const formData = new FormData(thisForm).entries(); var settings = { "url": "{{ section.settings.endpoint }}", "method": "POST", "timeout": 0, "headers": { "Content-Type": "application/json" }, "data": JSON.stringify(Object.fromEntries(formData)) }; $.ajax(settings) .done(function (response) { alert('success'); form.reset(); }) .fail(function (jqXHR, textStatus, errorThrown) { // 获取HTTP状态码 const statusCode = jqXHR.status; try { // 解析服务器返回的错误响应为JSON对象 const errorData = JSON.parse(jqXHR.responseText); // 提取错误类型和提示信息 const errorType = errorData.error; const errorMessage = errorData.message; // 显示自定义错误提示 alert(`请求失败(状态码:${statusCode}):${errorMessage}(错误类型:${errorType})`); } catch (e) { // 兼容服务器返回非JSON格式的错误情况 alert(`请求失败(状态码:${statusCode}):${jqXHR.responseText || errorThrown}`); } });
关键说明:
fail回调会在请求返回4xx/5xx等错误状态码时触发,jqXHR对象包含请求的核心信息:jqXHR.status:直接获取HTTP状态码jqXHR.responseText:获取服务器返回的原始响应文本,对应你在控制台看到的错误JSON字符串
- 用
JSON.parse()将响应文本转为JSON对象后,就能直接访问error和message字段 - 加入
try/catch是为了避免服务器返回非JSON格式错误时,代码出现解析报错
内容的提问来源于stack exchange,提问作者MariaL
相关产品推荐
相关产品推荐

