亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將JavaScript變量傳遞給Flask url_for

將JavaScript變量傳遞給Flask url_for

LEATH 2019-11-19 15:37:37
我有一個端點,該端點在url中帶有一個值,并產生一些將插入div中的內容。我想url_for使用JavaScript變量來構建url 。但是,$variable1是作為字符串而不是的值傳遞的variable1。如何將JavaScript變量的值傳遞給url_for?function myFunction() {    var variable1 = "someString"    $('#demo').load(        "{{ url_for('addshare2', share = '$variable1') }}"    );}
查看完整描述

2 回答

?
寶慕林4294392

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

    }

);


查看完整回答
反對 回復 2019-11-19
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

有時,我使用以下替代方法使用臨時占位符字符串:


var variable1 = "someString";

$('#demo').load(

    "{{ url_for('addshare2', share='ADDSHARE2') }}".replace("ADDSHARE2", variable1)

);

感覺不太正確,我仍在尋找更好的解決方案。但這確實起作用。


查看完整回答
反對 回復 2019-11-19
  • 2 回答
  • 0 關注
  • 1859 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號