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)
);
感覺不太正確,我仍在尋找更好的解決方案。但這確實起作用。
添加回答
舉報