В вашей функции checkVal()
вы пытаетесь отправить значения в шаблон асинхронно (через AJAX), но не визуализируете шаблон с этим контекстом.
Я бы удалил эту частьВаша checkVal()
функция:
$.get(
url="/passFails",
data={'host' : myHost},
success = function () {
console.log('Data passed successfully!');
}
);
И замените ее следующим:
window.location.href = "/passFails?" + $.param({"host": myHost});
Как упоминалось @ guest271314, это отправляет параметры в виде строки запроса, которую затем можно проанализироватьпо шаблону.
Обновление на основе комментариев
Если вам нужно отправить обработанные данные, используя запрос "не-AJAX" POST
, должно работать следующее.Вероятно, это не лучший способ сделать это, но без рефакторинга всего кода, я думаю, что это самый быстрый способ заставить ваш код работать.
Шаг 1: Изменить тег формы в Results.html
Измените тег формы на: <form name="ResultPage" method="" action="">
.Другими словами, удалите значения для method
и action
.
Шаг 2: Измените функцию checkVal()
в script.js
Измените *Функция 1034 * выглядит следующим образом:
function checkVal() {
var myHost = [];
var myPort = [];
// Number of inputs to create
var number = document.getElementById("Number").value;
for (var i = 1; i <= number; i++) {
//pass myHost and myPort to first.py for further processing.
myHost.push(document.getElementById('Host ' + i).value);
myPort.push(document.getElementById('Port ' + i).value);
}
for (var i = 0; i < number; i++) {
alert("Value of Host: " + (i + 1) + " is: " + myHost[i]);
alert("Value of Port: " + (i + 1) + " is: " + myPort[i]);
}
$(document.body).append('<form id="hiddenForm" action="/passFails" method="POST">' +
'<input type="hidden" name="host" value="' + myHost + '">' +
'<input type="hidden" name="port" value="' + myPort + '">' +
'</form>');
$("#hiddenForm").submit();
}
Это в основном обрабатывает форму, в которую пользователь вводит свои данные, помещает эти данные в отдельную скрытую форму и передает эту скрытую форму как POST
на сервер.
Шаг 3: Измените pass_fails()
в app.py
для доступа к данным.
В вашем методе pass_fails()
измените значение вашегоhost_list
переменная будет host_list = list(request.form["host"].split(","))
.Это прочитает значение кортежа для «host» и преобразует его из строки CSV в список.
Вот полная версия измененного метода:
@app.route('/passFails', methods=["POST", "GET"])
def pass_fails():
host_list = list(request.form["host"].split(","))
port_list = list(request.form["port"].split(","))
print("Value of DATA variable in passFails Decorator is: %s" % host_list)
for val in host_list:
print("The value in VAL Variable is: %s" % val)
return render_template('passFails.html', hosts=host_list)