将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 } );