调用JS登录API:正确凭证可登录,错误时无法获取API返回提示弹窗
登录API错误凭证提示框不显示的问题修复
问题根源分析
- if语句语法错误:原代码里
if(message="successfull")是赋值操作而非相等判断,且未用花括号包裹代码块,导致不管登录成功与否,都会执行页面跳转。 - 错误场景处理逻辑偏差:多数登录API在凭证错误时返回HTTP 200状态码,仅响应体中
success字段为false,这种情况会进入success回调而非error回调,你原本把错误处理放在error回调里自然不会触发。 - error回调参数误用:
$.ajax的error回调第三个参数是错误描述文本,不是服务器返回的响应体,要获取接口返回的错误信息需通过jqXhr.responseJSON。
修正后的代码
function userlogin(){ var success = ""; var message = ""; var data = ""; var access_token = ""; var refresh_token = ""; $.ajax('http://43.204.97.29:5000/login', { type: 'POST', data: { username: document.getElementById("userName").value, password: document.getElementById("password").value }, success: function (server_response) { success = server_response.success; message = server_response.message; data = server_response.data; // 用全等判断,包裹代码块,同时处理成功和失败场景 if(success === true || message === "successfull"){ access_token = data.access; refresh_token = data.refresh; document.cookie = "access_token=" + access_token + "; expires=Sun, 1 Jan 2023 00:00:00 UTC; path=/"; window.open("http://13.232.215.199/gameshield/dashboard.html","_self"); } else { // 错误凭证时弹出提示 alert(message); } }, error: function (jqXhr) { // 处理HTTP错误(比如接口崩溃、网络问题) var errorInfo = jqXhr.responseJSON?.message || "登录失败,请稍后重试"; alert(errorInfo); } }); }
HTML部分无需修改:
<input type="button" name="login" class="btn btn-primary" onclick="userlogin();" value="login" id="login">
内容的提问来源于stack exchange,提问作者omkar potekar
相关产品推荐
相关产品推荐

