You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用JS登录API:正确凭证可登录,错误时无法获取API返回提示弹窗

登录API错误凭证提示框不显示的问题修复

问题根源分析

  1. if语句语法错误:原代码里if(message="successfull")是赋值操作而非相等判断,且未用花括号包裹代码块,导致不管登录成功与否,都会执行页面跳转。
  2. 错误场景处理逻辑偏差:多数登录API在凭证错误时返回HTTP 200状态码,仅响应体中success字段为false,这种情况会进入success回调而非error回调,你原本把错误处理放在error回调里自然不会触发。
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:36:19