将JavaScript变量传递给Flask url_

将JavaScript变量传递给Flask url_,javascript,python,flask,jinja2,Javascript,Python,Flask,Jinja2,我有一个端点,它接受url中的一个值,并生成一些将插入到div中的内容。我想使用JavaScript变量为的url\u构建url。但是,$variable1作为字符串传递,而不是variable1的值。如何将JavaScript变量的值传递给的url\u function myFunction() { var variable1 = "someString" $('#demo').load( "{{ url_for('addshare2', share = '$v

我有一个端点,它接受url中的一个值,并生成一些将插入到div中的内容。我想使用JavaScript变量为的
url\u构建url。但是,
$variable1
作为字符串传递,而不是
variable1
的值。如何将JavaScript变量的值传递给
url\u

function myFunction() {
    var variable1 = "someString"
    $('#demo').load(
        "{{ url_for('addshare2', share = '$variable1') }}"
    );
}

您不能在Jinja中评估JavaScript。当Jinja呈现时,您试图在服务器端生成url,但您引用的变量仅在客户端浏览器上运行的JavaScript中可用

在客户端构建url是最简单的修复方法。(我不知道你的路线是什么样子,所以这里有一个例子。)

但是,这并不是很有用,因为您不能对
使用
url\u,所以您必须对url进行硬编码。这是一个很好的迹象,表明您想要的是向其传递参数的AJAX端点,而不是包含值的端点

@app.route('/addshare2', methods=['POST'])
def addshare2():
    share = request.json['share']
    ...
    return jsonify(result=...)
现在,您可以使用
url\u为
生成url,并将参数作为表单数据传递

$.post(
    '{{ url_for('addshare2') }}',
    {share: variable1},
    function (data) {
        // do something with data on successful response
    }
);

有时,我对临时占位符字符串使用以下变通方法:

var variable1 = "someString";
$('#demo').load(
    "{{ url_for('addshare2', share='ADDSHARE2') }}".replace("ADDSHARE2", variable1)
);
感觉不太对劲,我仍在寻找更好的解决方案。但它确实起到了作用

var variable1 = "someString";
$('#demo').load(
    "{{ url_for('addshare2', share='ADDSHARE2') }}".replace("ADDSHARE2", variable1)
);