Как заставить запускать скрипт JavaScript ajax перед вызовом функции onclick Python в Flask? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть эта строка кода в моем 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. Спасибо за любую помощь.

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