GoのEchoで画面遷移しない
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');
});
});
});