Luc*_*mos 5 javascript python jinja2 flask
我有一个端点,它在URL中获取一个值并生成一些将插入到div中的内容.我想url_for使用JavaScript变量构建url .但是,$variable1作为字符串传递,而不是值variable1.如何将JavaScript变量的值传递给url_for?
function myFunction() {
var variable1 = "someString"
$('#demo').load(
"{{ url_for('addshare2', share = '$variable1') }}"
);
}
Run Code Online (Sandbox Code Playgroud)
dav*_*ism 12
你无法在Jinja中评估JavaScript.您正在尝试在Jinja渲染时在服务器端生成URL,但是您引用的变量仅在客户端浏览器上运行的JavaScript中可用.
在客户端构建URL是最直接的解决方案.(我不知道你的路线是什么样的,所以这是一个例子.)
$('#demo').load('/url/for/addshare2/' + variable1);
Run Code Online (Sandbox Code Playgroud)
但是,这不是很有用,因为您无法使用url_for,因此您必须对网址进行硬编码.这是一个好兆头,你想要的是一个传递参数的AJAX端点,而不是一个包含值的端点.
@app.route('/addshare2', methods=['POST'])
def addshare2():
share = request.json['share']
...
return jsonify(result=...)
Run Code Online (Sandbox Code Playgroud)
现在您可以使用生成url url_for,并将参数作为表单数据传递.
$.post(
'{{ url_for('addshare2') }}',
{share: variable1},
function (data) {
// do something with data on successful response
}
);
Run Code Online (Sandbox Code Playgroud)
有时,我使用以下替代方法使用临时占位符字符串:
var variable1 = "someString";
$('#demo').load(
"{{ url_for('addshare2', share='ADDSHARE2') }}".replace("ADDSHARE2", variable1)
);
Run Code Online (Sandbox Code Playgroud)
感觉不太正确,我仍在寻找更好的解决方案。但这确实起作用。
| 归档时间: |
|
| 查看次数: |
5903 次 |
| 最近记录: |