簡體   English   中英

將帶有可變參數的 url 從 javascript 傳遞到 flask 端點

[英]pass the url with variable param from javascript to flask endpoint

具有在單擊時觸發抓取的按鈕和按鈕邏輯的視圖頁面位於 javascript 中。 現在我已將按鈕單擊綁定到 flask function。 URL 包含 flask 變量(例如 scrape.route('/'))。 現在我希望提取這個域值並將其傳遞給 flask function。

#blueprint
def create_blueprint():
    scrape = Blueprint('scrape', __name__, url_prefix='/jarvis')


    @scrape.route('<domain>/start_scrape')
    def start_scrape(domain):
      resp = get_links(domain)
      return resp
#button logic
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type=text/javascript>
  $(function() {
      $('a#start_button').bind('click', function() {
          if(!startScrape()) {
                return false;
          }
          document.getElementById('start_button').style.display = "none";
          var url = window.location.href;
          var url_splits = url.split('/');
          var domain_v = String(url_splits[url_splits.length - 1]);
          document.write(domain_v)
          $.getJSON({{ url_for('scrape.start_scrape', domain=domain_v)|tojson}}, {
                  name : $('input[name="scrape_name_input"]').val(),
                  queries : $('textarea[name="query_input"]').val()
              }, function(data) {
                endScrape();
                console.log(data);
                alert(data["message"]);
                window.location.reload();
                scrape_name_input.value = "";
              });
          return false;
      });
  });

我通過拆分 url 並提取最后一部分來綁定域,但是當我嘗試使用 url_for 構建 url 時,它的行為很奇怪。 Url 在構建 URL 時需要域變量,如果我硬編碼一個值,例如“bing”,它就可以工作,但是如果我使用上面代碼中提到的變量,它會失敗並且端點 Z572D4E421E5E6B9711D815EA8

GET /jarvis//start_scrape

我不知道為什么會這樣。 我需要動態獲取域,因此我無法對其進行硬編碼。 I referred to following but no help: Flaskr url_for with parameters not working when called from javascript to python , Pass argument to flask from javascript , Pass JavaScript variable to Flask url_for

任何想法都將受到高度贊賞。

您正在混合后端和前端。

在這個片段中

$.getJSON({{ url_for('scrape.start_scrape', domain=domain_v)|tojson}}, {})

這些花括號 {{}} 中的所有內容都是 python 側代碼。 變量 domain_v 是前端 Javascript 變量,您不能傳遞后端 function。

您有 2 個選項來解決此問題。 您也可以使用 URL 解析功能在后端定義domain_v 或者您可以刪除url_for('scrape.start_scrape', domain=domain_v)並在 Javascript 端執行相同操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM