@VadimRublev
Go, front-end (ванильный).

Как различить в JS разные варианты ответа Go-сервера (на один AJAX-запрос)?

Как различить в JS в браузере варианты ответа сервера (при одном AJAX-запросе), и поместить их в соответствующее место-тег HTML-документа?
HTML:
<form>
    <span>Введите дату:</span>
    <input />
    <span id="span_1"></span>   <!-- Здесь ответ-вариант_1 сервера. -->
    <span id="span_2"></span>   <!-- Здесь ответ-вариант_2 сервера. -->
    <button type="submit">Отправить</button>
</form

JS:
// AJAX-отправка данных_формы на сервер.
...
    form.addEventListener('submit', function(event) {
        xhr.onloadend = function() {
            if (xhr.status === 200) {
	    // robot-doc. При успешном ответе сервера записываем содержимое ответа в тег:
                document.querySelector('#span_1').innerHTML = xhr.response;   // В этот тег надо записать "ответ-вариант_1", если сервер отдал его.
                или
                document.querySelector('#span_2').innerHTML = xhr.response;   // В этот тег надо записать "ответ-вариант_2", если сервер отдал его.
            }
            xhr.open('POST', '/routForm');
        }
    });

Go:
// Маршрут-приёмник данных формы.
http.HandleFunc("/routForm", func(w http.ResponseWriter, r *http.Request) {
    ...Проверка условий, по итогу которой выдаётся значение:
    if итог=ответ-вариант_1 {
        // возвращаем браузеру ответ-вариант_1
        var dataRespon_1 = "ответ-вариант_1"
        var goRespon, _ = template.New("data_resp").Parse("{{ .}}")
        goRespon.Execute(w, dataRespon_1)
    } else {
        // возвращаем браузеру ответ-вариант_2
        var dataRespon_2 = "ответ-вариант_2"
        var goRespon, _ = template.New("data_resp").Parse("{{ .}}")
        goRespon.Execute(w, dataRespon_2)
    }
})
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 1
Aco
@Aco
Заклинатель кода
Ответе JSON-ом с сервера, где будет указан код ответа, которй можно использовать как id html элемента. Если тело ответа менять нет возможности - присылайте заголовком ответа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы