尝试使用 JQuery 捕获日志失败和 404
Trying to catch Log failure and 404 with JQuery
我正在为我的研究结束项目开发一个Web Spring MVC 4应用程序,该应用程序应该连接Web和Android客户端。
我使用@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 错误
- /undefined在我的404错误日志中多次出现
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- JsFiddle在分叉后描述失败
- 如何使用Protractor从Chrome控制台获取所有日志
- 自定义运行时Can'在谷歌应用引擎中看不到我的自定义日志
- 为什么不'当单元测试出现解析错误时,我的因果报应测试会失败
- 当一些承诺失败时,如何继续使用$q.all()
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 在Jquery中单击传播失败
- 网页上失败的javascript会导致所有其他脚本失败
- 日志Javascript&电子(原子外壳)
- 带有对象解析的响应javascript ajax失败
- 错误:打开Robot Framework日志失败
- 尝试使用 JQuery 捕获日志失败和 404
- 如何运行无头YUI测试并在日志文件中记录成功/失败
- 日志含义传递JSON对象失败
- 日志含义骨干jsffidle加载外部资源失败
- 日志含义连接服务器失败.(file:///android_asset/www/index.html)
- 日志含义修改对象名称,读取JSON数据失败
- 为什么我的测试失败,并且lodash方法中的console.log()语句没有记录日志