在提交$.get
登录表单之前,我使用ASP
函数检查与服务器的连接。如果get函数成功并返回true,则表单应该提交,否则如果失败并返回false,则不应该。
我尝试了很多不同的配置,但是我尝试过的所有内容都要么让按钮无法操作,要么只显示一个真实的,绝不是假的!
任何建议表示赞赏。感谢。
<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Enter" ValidationGroup="LoginUserValidationGroup" class="submitButton" />
UPDATE - 下面的代码正确执行了get函数,但我觉得问题出在$('form')。submit();
当返回true时,页面会像发送数据一样刷新,但系统不会记录用户。为什么会这样!?
submitButton.click(function () { // capitalize username on login
var url = 'https://examplesite.com/';
$.get(url).done(function () {
if (usernameBox.val() === '') {
usernameBox.attr('placeholder', 'Username Required');
passwordBox.attr('placeholder', '');
usernameBox.focus();
return false;
}
else if (passwordBox.length && passwordBox.val() === '') {
passwordBox.attr('placeholder', 'Password Required');
usernameBox.attr('placeholder', '');
passwordBox.focus();
return false;
}
else if (passwordBox.length && passwordBox.val().length < 6) {
passwordBox.focus();
return false;
}
else {
alert('Successful - Now logging in');
$('form').submit();
}
}).fail(function () {
alert('Failed - No Connection');
});
return false;
});
};
答案 0 :(得分:1)
$.get
是一个异步函数,因此online
永远不会设置为您认为的,因为在调用完成之前正在处理其余代码。将您的逻辑移到.done
部分!
$.get(url).done(function () {
online = true;
if (online == true) {
alert('Success');
$('form').submit();
}
else if (online == false) {
alert('Cannot Connect');
return false;
}
else {
return false;
}
}).fail(function () {
online = false;
});