将JavaScriptvariables传递给Flask url_for

我有一个端点,它在url中产生一个值,并产生一些将被插入div的内容。 我想用url_for使用JavaScriptvariables来构buildurl。 但是, $variable1是作为一个string传递的,而不是variable1 1的值。 我如何将JavaScriptvariables的值传递给url_for

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

Jinja无法评估JavaScript。 你正试图在Jinja渲染的时候在服务器端生成一个url,但是你正在引用一个只在客户端浏览器上运行的JavaScript中可用的variables。

在客户端构buildurl是最直接的解决方法。 (我不知道你的路线是什么样的,所以这里是一个例子。)

 $('#demo').load('/url/for/addshare2/' + variable1); 

然而,这不是很有用,因为你不能使用url_for ,所以你必须对url进行硬编码。 这是一个好兆头,你想要的是一个你传递参数的AJAX端点,而不是一个包含值的端点。

 @app.route('/addshare2', methods=['POST']) def addshare2(): share = request.json['share'] ... return jsonify(result=...) 

现在,您可以使用url_for生成url,并将参数作为表单数据传递。

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