[英]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.