尝试使用 JQuery 捕获日志失败和 404

Trying to catch Log failure and 404 with JQuery

本文关键字:日志 失败 JQuery      更新时间:2024-05-04

我正在为我的研究结束项目开发一个Web Spring MVC 4应用程序,该应用程序应该连接WebAndroid客户端。

我使用@RestController来帮助安卓应用程序通过json轻松通信。我正在尝试在Web或移动应用程序中捕获连接失败ex:404,即使在Web应用程序中,我也尝试通过Ajax与服务器进行几乎所有通信,希望使用户更加放松(进度条,实时信息提示......(但是,使用jQuery event.preventDefault()后的国家/地区的问题之一, 我无法在接下来的操作中克服它,并且加载了响应页面并保持不可见!例如,这是我的登录页面示例:

登录.js

jQuery(document).ready(function ($) {
    $("#login-form").submit(function (event) {
        //Do somthing...
        // Call login function
        logViaAjax(event);
        // Prevent the form from submitting via the browser.
        return false; //Or using event.preventDefault()
    });
});
// logViaAjax function
function logViaAjax(event) {
    var logObj = {};
    logObj["username"] = $("#username").val();
    logObj["password"] = $("#password").val();
    //the response
    $.ajax({
        type: "POST",
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        url: "/login",
        data: logObj,
        dataType: 'text',
        timeout: 10000,
    success: function (data) {
        if (data.indexOf("login-box") !== -1) {
            showLogFail();
        }else{
            window.location.reload();
            //I dont need to reload the page because this gives me login page again... May be if there is a way to get the URL from data!?
        }
    },
    error: function () {
        showWarning();
    }
    });

我正在使用Spring Security 4来处理身份验证,我们知道它给出了 url ex:/login?fail失败,如果成功,则获取请求的页面,我最近知道它甚至在进入 loginUrl 之前重定向我的前/login。我试图测试用户是否在服务器端登录并发送 json 响应,但这可能会导致在请求登录之前丢失页面。

我想我应该在 success : function()中测试在 jQuery(但未显示(中加载的 url 是否包含?fail,以通知用户更改日志或密码。否则,如果没有,页面用户需要的是在后面收费,我需要的只是显示它。


更新

在这些小更改之后,我需要做的只是将页面保持在登录页面之外并重新显示它。请注意,此功能由 Spring Security 自动提供,但它仍在后台运行。例如,在我的情况下,当用户单击/messenger应用程序将他重定向到/login登录时,如果他登录失败,它会给出/login?fail但由于 JQuery 而看不到此页面,否则他登录成功,它会再次将他发送到/messenger......

试试这个

var flag;
jQuery(document).ready(function ($) {
    $("#login-form").submit(function (event) {
        //Do somthing...
        // Call login function
        logViaAjax(event);
        if(flag.status == 404){
            return false;
        }
    });
});

function logViaAjax(event) {
    var logObj = {};
    logObj["username"] = $("#username").val();
    logObj["password"] = $("#password").val();
    //the response
    flag = $.ajax({
        type: "POST",
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        url: "/login",
        data: logObj,
        dataType: 'text',
        timeout: 10000,
        success: function (data) {
            //Here to move to the page unseen if success and show error hint if it fail...
        },
        error: function () {
            showWarning(); //Show error alerts, this part is DONE!
        }
    });

所做的更改

► 将 AJAX 分配给变量并在jQuery(document).ready中加入条件

AJAX - 就绪状态更改事件

演示小提琴显示 404 错误