0

在提交登录表单之前,我正在使用一个$.get函数来检查与服务器的连接。ASP如果 get 函数成功并返回 true,则应提交表单,否则如果失败并返回 false,则不应提交。

我尝试了许多不同的配置,但我尝试过的所有操作要么使按钮无法操作,要么只显示真,而不是假!

任何建议表示赞赏。谢谢。

<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Enter" ValidationGroup="LoginUserValidationGroup" class="submitButton" />

更新- 下面的代码正确执行 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;
        });
    };
4

1 回答 1

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;
});
于 2013-09-28T18:15:41.320 回答