Невозможно сравнить запрос к базе данных из колбы с переменной javascript - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть сайт на основе фляги, и я запрашиваю базу данных в Flask и отправляю этот список значений на мою html-страницу. Оттуда у меня есть скрипт, который сравнивает переменную с элементом в списке, но случай никогда не работает.

def start():

title = ""
paragraph = ["Cognitive Motor"]

pageType = 'start'


#if request.form.get("cognitiveAbility1" != None):
methodsQuery = db.engine.execute("select method from permutations")
motorQuery = db.engine.execute("select cognitivemotor from permutations")
motorList = motorQuery.fetchall()
data = request.stream.read()
methodList = methodsQuery.fetchall()
data2 = request.stream.read()
return render_template("start.html", title=title, paragraph=paragraph, pageType=pageType,data=data, methodList=methodList,motorList=motorList)

Это код в колбе, а ниже приведен скрипт, который у меня есть в моем HTML-файле. Случай, если оператор if никогда не работает и не выводит console.log ("test").

<script>
        $(document).ready(function() {
            $(document).on('click', '.submitButton', function cognitiveFunction() {


            var checkCog = document.getElementsByName("cognitive");
            var checkMot = document.getElementsByName("motorCheck");
            var resultCog = '';
            var resultMot = '';
            var motorQuery= "";
            for(i = 0; i <3; i++) {

                if(checkCog[i].checked === true) {
                resultCog += checkCog[i].value + '';
                console.log(resultCog);
                }   
            }
            for(i = 0; i <8; i++) {
                if(checkMot[i].checked === true) {
                    resultMot += 'Yes';
                }
                else {
                    resultMot += 'No';
                }
            }
            motorQuery = resultCog + resultMot ;

            for(i = 0; i <19; i++) {

                if ( '{{ motorList [i]}}' == motorQuery){
                    console.log('test');
                    $('body').append("{{ methodList [i] }}")
                }
            }

Когда я просто печатаю значение из списка motorList на своей html-странице вручную, это выглядит так, (u'Когнитивно нетронутыNoNoYesNoYesNoYesYes ',) Но в базе данных это просто Когнитивно интактноНоДаНоДаДаНоДаДа

1 Ответ

0 голосов
/ 12 ноября 2018

У вас есть неправильное понимание того, как взаимодействуют JS и Flask.Невозможно поместить переменную JS i в переменную шаблона Jinja '{{ motorList[i] }}, потому что Jinja отображается на сервере задолго до того, как JS запускается на клиенте.

Вам нужно будет вывести все motorList в формате, доступном для вашего скрипта, например, JSON, а затем выполнить итерацию по нему в JS.

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