Go 1.11.2
フレームワーク:Echo

GoでEchoを使用したWebページを作成しています。
試しにログインページを作ってみていたのですが、ログイン成功時にinformationというページに遷移する予定が遷移せず、ログインページのままとなってしまいます。
また、ログイン失敗時に「http.StatusInternalServerError」としているのはajaxのfailedでアラートを出したいためです。

下記の2パターン試してみましたがどちらも上記の結果となりました。
アドバイスいただければと思います。

試したパターン
・loginというIDのformを使用してSubmitしてみたパターン
・login_buttonというIDのボタンクリックで処理してみたパターン

ステップ実行で確認した点
・handleLoginPost関数はどちらのパターンでも呼び出されている。
・handleLoginPost関数でuserIDとpasswordは入力した値が取れている。
・handleLoginPost関数でtestとpassが入力されたとき、「return c.Render(http.StatusOK, "information", nil)」が実行されている。
・formでSubmitしたパターンの「event.preventDefault();」を削除してtestとpassを入力するとinformationのページに遷移する。

※とりあえず試しに作ってみているものなためIDとパスが固定ですが気にしないでください。

Go

func handleLoginPost(c echo.Context) error {
    userID := c.FormValue("user_id")
    password := c.FormValue("password")

    if userID == "test" && password == "pass" {
        return c.Render(http.StatusOK, "information", nil)
    } else {
        return c.Render(http.StatusInternalServerError, "login", nil)
    }
}

JavaScript

$(function () {
    $('#login_button').click(function (event) {
        $.ajax({
            url: '/login',
            type: 'POST',
            data: {
                user_id: document.getElementById('user_id').value,
                password: document.getElementById('password').value
            }
        }).fail(function () {
            alert('test');
        });
    });

    $('#login').submit(function (event) {
        // form タグによる送信をキャンセルします。
        event.preventDefault();

        var $form = $(this);

        $.ajax({
            url: $form.attr('action'),
            type: $form.attr('method'),
            data: $form.serialize()
        }).fail(function () {
            alert('test');
        });
    });
});