У меня есть эта строка кода в моем HTML:
<button type="button" id="applyBinaries" class="form-control text" onclick="window.location.href='{{ url_for('dashboard', dataType='custom') }}';">Apply</button>
*
Его 'ID' applyBinaries 'соответствует этому сценарию JS, который отправляет обратно json отмеченных флажков, используя ajax в сценарий python, который записывает их как глобальную переменную:
$("#applyBinaries").click(function(event) {
event.preventDefault();
var binaries = $("#binaryCheckboxes input:checkbox:checked").map(function() {
return $(this).data("item-id");
}).get();
$.ajax({
method: 'POST',
url: $SCRIPT_ROOT + 'dashboard/getbinaries',
contentType: 'application/json;charset=UTF-8',
data: JSON.stringify({'data': binaries}),
success: function(response) { console.log(response) },
error: function(response) { console.log(response) }
})
});
URL-адрес панели управления / getbinaries - это всего лишь этот код (который может быть не лучшим способом получения значений):
@app.route('/dashboard/getbinaries', methods=['POST'])
def getBinaryData():
global chosenBinaries
chosenBinaries = request.json['data']
return redirect('edit')
Затем доступ к глобальной переменной осуществляется в другой python функции 'dashboard ()', на которую имеется ссылка в HTML в аргументе onclick =. Повозившись с печатными материалами в консоли, я понял, что сначала запускается функция панели управления Python, а затем запускается сценарий JS. Однако для правильной работы моего проекта мне нужно, чтобы скрипт JS ajax запускался первым, чтобы значения, отправленные обратно, могли использоваться моей функцией dasboard () - любое добавленное ожидание в функции не решило проблему, поскольку Сценарий JS не запускается до завершения работы функции dashboard ().
Как я могу запустить сценарий JS первым? Или есть другой способ убедиться, что значения присутствуют до вызова функции dashboard (). Извините, если решение простое, так как я новичок в JavaScript. Спасибо за любую помощь.