2 回答
TA贡献2021条经验 获得超8个赞
您无法在Jinja中评估JavaScript。您正在尝试在Jinja呈现时在服务器端生成url,但是您引用的变量仅在客户端浏览器上运行的JavaScript中可用。
在客户端上构建url是最简单的解决方法。(我不知道您的路线是什么样子,所以这里有个例子。)
$('#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 url_for,并将参数作为表单数据传递。
$.post(
'{{ url_for('addshare2') }}',
{share: variable1},
function (data) {
// do something with data on successful response
}
);
TA贡献1796条经验 获得超7个赞
有时,我使用以下替代方法使用临时占位符字符串:
var variable1 = "someString";
$('#demo').load(
"{{ url_for('addshare2', share='ADDSHARE2') }}".replace("ADDSHARE2", variable1)
);
感觉不太正确,我仍在寻找更好的解决方案。但这确实起作用。
添加回答
举报