Можно ли передать возвращаемое значение функции как значение формы из html в представления? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть JS функция, которая возвращает массив элементов. Я хотел бы передать его через форму для просмотра. В данный момент этот массив передается как ajax запрос, но он не слишком надежен. Это работает, но иногда отправляет пустой запрос. Ниже я поместил код, чтобы показать, что я хотел бы получить. Функция js является своего рода фиктивной, потому что код довольно длинный, но роль этой функции - просто вернуть массив. Правильно ли работает приведенный ниже лог c?

<form method='post' action='/category/' class="form-inline">
                    {% csrf_token %}
                  <li class="nav-item">
                    <button class="nav-link purple darken-4" type="submit" 
                    name="Array" value=test() style="background-color: 
                    grey;">Make order</button>
                  </li>

    </form>

    <script>
    function test(){
      var array = []
      return aray
    }
    </script>

1 Ответ

0 голосов
/ 03 марта 2020

Если вы не хотите отправлять данные через ajax, вам необходимо заполнить форму скрытыми данными перед отправкой.

Измените javascript:

function test() {
    return ['1', '2']
}

const form = document.getElementsByTagName('form')[0];
form.onsubmit = function (e) {
    const elems = test();
    elems.forEach((el) => {
        const input = document.createElement("input");
        input.setAttribute("type", "hidden");
        input.setAttribute("name", "test[]");
        input.setAttribute("value", el);
        form.appendChild(input);
    })
}

и вы можете прочитать данные формы из запроса, используя request.POST.getlist('test[]')

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