Вы не можете оценить JavaScript в Jinja. Вы пытаетесь создать URL-адрес на стороне сервера, в то время как Jinja выполняет рендеринг, но вы ссылаетесь на переменную, которая доступна только в JavaScript, запущенном в клиентском браузере.
Создание URL-адреса клиента сторона является самым простым исправлением. (Я не знаю, как выглядит ваш маршрут, так что вот пример.)
$('#demo').load('/url/for/addshare2/' + variable1);
Однако это не очень полезно, потому что вы не можете использовать url_for
, поэтому вам нужно hard-code 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
}
);
Иногда я использую следующее обходное решение с временной строкой-заполнителем:
var variable1 = "someString";
$('#demo').load(
"{{ url_for('addshare2', share='ADDSHARE2') }}".replace("ADDSHARE2", variable1)
);
Это не совсем правильно, и я все еще ищу лучшее решение. Но он выполняет эту работу.