0

ログインフォーム$.getを送信する前に、サーバーへの接続を確認する機能を使用しています。ASPget 関数が成功して true を返した場合、フォームは送信されます。それ以外の場合、失敗して false が返された場合は送信されません。

私は多くの異なる設定を試しましたが、私が試したすべてがボタンを操作不能にするか、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 に答える