Выполнить отправку шаблона из-за отсутствия перенаправления HTTP? - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь передать данные с одной страницы на другую, используя go.Вот упрощенная версия того, что я делаю:

//Attempting to go from page1.gohtml to page2.gohtml to page3.gohtml.

type myData stuct {
    data1 string
    data2 string
}

func page1(w http.ResposneWriter, r *http.Request) {
    if r.Method != http.MethodPost {
        myTemplate.ExecuteTemplate(w, "page1.gohtml", my_data) //do current page
    }

   //populated myData

    myTemplate.ExecuteTemplate(w, "page2.gohtml", my_data) //go to next page
}

//My .gohtml forms are like so:
<form id="page1" name="page1" method="post">
    <input type="submit" class="click">
</form>

Повторите общий код для страницы 2 до страницы 3.

Постановка задачи: Когда я выполняю шаблонсо страницы 1 на страницу 2 моя структура данных остается заполненной, однако страница остается на localhost:80/page1

Она не перемещается на страницу 2, несмотря на отображение страницы 2.

Это непроблема, пока я не выполню отправку на странице 2. Это возвращает меня к странице 1 вместо того, чтобы перейти на страницу 3.

Я попытался настроить форму с действием, которое приведет меня к следующейстр.Это перенаправляет меня, но не дает мне заполненную структуру данных, в которой я нуждаюсь.

Настройка отправки для возврата false останавливает выполнение моего серверного кода.

И перенаправление HTTP приносит мнена следующую страницу, но имеет ту же проблему, что и действие формы.

Это временные данные, которые я не хочу сохранять в базе данных.

Может ли кто-нибудь помочь направить меня намои варианты?

1 Ответ

0 голосов
/ 09 декабря 2018

На мой взгляд, вы не перенаправляете, вы просто запускаете шаблон страницы 2.

Для перенаправления попробуйте:

http.Redirect(w, r, "http://127.0.0.1/page2", 301)

вместо

myTemplate.ExecuteTemplate(w, "page2.gohtml", my_data) //go to next page

edit:

Теперь я вижу, что я не полностью ответил на ваш вопрос, поскольку проигнорировал my_data (что, кстати, в golang названные являются camelCase, так что выследует переименовать его с помощью myDate ...:).

В любом случае, для передачи данных, поскольку это только строки, вы можете попробовать сериализовать их и добавить в тело запроса (я не знаюесли это лучшая практика, то, вероятно, сработает первое, что сработает)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...