我正在尝试访问网站并自动登录。
在此之后,我想知道这是成功还是失败,但我无法让它发挥作用。页面加载空白,没有任何反应。
注意:我故意将网址显示为灰色。
以下是我的尝试,
<HTML>
<HEAD>
<script src="https://code.jquery.com/jquery-2.2.3.min.js" type="text/javascript"></script>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>
<script type="text/javascript">
$(document).ready(function () {
runLogin();
});
function runLogin(){
alert("start");
if (window.location.indexOf("url") > -1) {
jQuery("#j_username").val("username");
jQuery("#j_password").val("password");
jQuery("#loginForm").submit();
}
}
</script>
答案 0 :(得分:1)
如果您想测试您的登录表单,请使用Protractor或其他e2e测试框架,但这种方式似乎不太安全。
答案 1 :(得分:0)
它正在加载一个空白页面,因为您的后端脚本没有重定向回您开始的页面。 一个选项是将当前网页网址作为额外字段发送到登录表单,以便在登录后可以重定向。这将要求您重构后端代码以便它可以处理这些额外信息(如果您使用j_security_check
,则无法实现)。 另一个选项是向您的登录页面发出AJAX请求,以便它实际上不会重定向页面,它只是静静地提交表单,然后JS处理响应。
如果要将当前页面的URL添加到登录请求中,请执行以下操作:
function runLogin() {
if (window.location.indexOf("url") > -1) {
jQuery("#j_username").val("username");
jQuery("#j_password").val("password");
jQuery("#loginForm").append(
'<input type="hidden" name="url" value="'+window.location.href+'"/>'
);
jQuery("#loginForm").submit();
}
}
如果您想使用AJAX发送登录请求:
function runLogin() {
var $form = $("#loginForm");
$.post($form.attr("action"), $form.serialize(), function(data) {
// login successful/unsuccessful message displays
// depending on what "data" contains
});
}