javascript python flask jinja2

Pase la variable de JavaScript al Frasco url_for



python flask (2)

A veces uso la siguiente solución alternativa con una cadena de marcador de posición temporal:

var variable1 = "someString"; $(''#demo'').load( "{{ url_for(''addshare2'', share=''ADDSHARE2'') }}".replace("ADDSHARE2", variable1) );

No se siente del todo bien y todavía estoy buscando una mejor solución. Pero hace el trabajo.

Tengo un punto final que toma un valor en la url y produce algún contenido que se insertará en un div. Quiero construir la url con url_for usando una variable de JavaScript. Sin embargo, $variable1 se pasa como una cadena, en lugar del valor de variable1 . ¿Cómo puedo pasar el valor de una variable de JavaScript a url_for ?

function myFunction() { var variable1 = "someString" $(''#demo'').load( "{{ url_for(''addshare2'', share = ''$variable1'') }}" ); }


No puedes evaluar JavaScript en Jinja. Intenta generar una URL en el lado del servidor mientras Jinja está procesando, pero hace referencia a una variable que solo está disponible en el JavaScript que se ejecuta en el navegador del cliente.

Construir la URL en el lado del cliente es la solución más sencilla. (No sé cómo se ve tu ruta, así que aquí hay un ejemplo).

$(''#demo'').load(''/url/for/addshare2/'' + variable1);

Sin embargo, esto no es muy útil porque no puede usar url_for , por lo que debe codificar las URL. Esta es una buena señal de que lo que quiere es un punto final AJAX al que le pase parámetros, en lugar de un punto final que contenga valores.

@app.route(''/addshare2'', methods=[''POST'']) def addshare2(): share = request.json[''share''] ... return jsonify(result=...)

Ahora puede generar la url con url_for y pasar los parámetros como datos de formulario.

$.post( ''{{ url_for(''addshare2'') }}'', {share: variable1}, function (data) { // do something with data on successful response } );