Как передать значение в новый шаблон, нажав на функцию href? - PullRequest
1 голос
/ 01 февраля 2020

Я хочу нажать на href и выполнить функцию javascript, чтобы опубликовать какое-то значение в python и отобразить новый шаблон с этими данными, это мой код.

index. html

<!DOCTYPE html>
<html lang="en">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<body>
      <a href="#" onclick="myFunction();">Click</a>

<script>
var jsvariable = 'hello world'
    function myFunction(){
        $.ajax({
            url: "/getvalue",
            type: "post", //send it through get method
            data:{'jsvalue': jsvariable},

    })
}
</script>

</body>
</html>

server.py

from flask import Flask, render_template, request, url_for

app = Flask(__name__)
@app.route('/', methods=['GET','POST'])
def index():
    return render_template('index.html')

@app.route('/getvalue', methods=['GET','POST'])
def getvalue():
    data = request.form['jsvalue']
    print(data)
    return render_template('index2.html', data=data)

if __name__ == "__main__":
    app.run(debug=True)

Теперь данные, которые передаются из ajax, выполняют функцию getvalue () в python, которая работает правильно, но не отображается в новом шаблоне, так как это сделать? я исправляю это.

1 Ответ

0 голосов
/ 02 февраля 2020

Mate, вам даже не нужно ajax для этого (я даже думаю, что это создает для вас проблему, поправьте меня, если я ошибаюсь, но ajax делает фоновый POST-запрос, как будто шаблон обрабатывается на задний план, вам нужен запрос переднего плана)

Также плохая практика, вы ставите свой скрипт перед телом, он должен быть не go в голове, а как можно дальше вниз

Почему использование onClick () в HTML - это плохая практика?

server.py

@app.route('/getvalue', methods=['GET','POST'])
def getvalue():
    if request.method=='POST':
        data = request.form['jsvalue']
        return render_template("index2.html", data=data)

index. html

<form action = "/getvalue" method = "POST">
    <input type = "hidden" name = "jsvalue"/>
    <input type = "submit" value = "submit"/>
</form>
<script>
    var jsvariable = 'hello world';
    var el=document.getElementsByName("jsvalue");
    el[0].value=jsvariable;
</script>

index2. html

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