У меня есть веб-страница с формами логина и пароля Если логин или пароль неверны, как я могу ответить с помощью функций javascript alert () или console.info () в golang
<body>
<!-- LOGIN FORM -->
<div class = "login-page">
<div class = "form">
<form class = "login-form"action = "/login" method = "POST">
<input type = "text" name = "username" placeholder = "username"/>
<input type = "password" name = "password" placeholder = "password"/>
<button type = "submit" id = "send" value = "Login">Login</button>
</form>
</div>
</div>
</body>
ГОЛАНГ
func (c *AuthenticationControllers) AdminLogin() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
http.ServeFile(w, r, "C:/Projects/Go/src/github.com/AlifElectronicQueue/web/template/login.html")
case "POST":
//********AUTHENTICATION PROCESS*********//
if loginAns {
//Some code
http.Redirect(w, r, "/admin/applications", 302)
} else {
http.Redirect(w, r, "/login", 302)
http.Error(w, http.StatusText(http.StatusForbidden), http.StatusForbidden)
}
В своем JS вы можете делать то, что хотите, либо отправив запрос с помощью javascript и ожидая ответа, а затем на основе ответа сделайте предупреждение / журнал соответственно, либо вы можете перенаправить код Go на страницу, где ваш JS уже знает, что для предупреждения / ведения журнала, или вы повторно визуализируете страницу входа, но с некоторыми дополнительными данными, предоставленными Go, которые затем считываются и обрабатываются JS.
Хорошо, это понятно, но у меня есть другой вопрос. Как ответить (неправильный пароль или логин), не обновляя html-страницу? Поскольку перенаправление обновляет страницу html, что мне следует использовать вместо этого?
В этом случае вы можете использовать 1-й вариант во втором комментарии. Отправьте данные формы с JS, используя XMLHttpRequest.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В вашем коде Go при сбое входа в систему не перенаправляйте и не записывайте ответ об ошибке, вы можете сделать только один из них для каждого запроса / ответа. Вы хотите вернуть StatusForbidden или 302? Выбери один.