[英]How to pass two arguments to a python function that is being called by ajax function?
我正在使用 Flask 制作一個網絡應用程序,並希望在單擊按鈕時調用此函數並且頁面不重新加載:
@app.route('/add_song_to_playlist')
def add_song_to_playlist(pl_id, s_id):
sp = songs_playlists(song_id = s_id, playlist_id = pl_id)
db.session.add(sp)
db.session.commit()
return "nothing"
但是它需要兩個參數,我不確定如何在 ajax 函數中傳遞它們。 我還需要它們像帶有 {{ }} 的內聯 python 代碼一樣。
這是模板和按鈕中的 ajax 函數,以及我試圖作為 getJSON() 接受的“數據”參數傳遞的內容:
<div class="dropdown-menu dropdown-menu-right float-left">
<a class="dropdown-item" href="{{ url_for('make_playlist') }}"> Create a new playlist </a>
{% for p in pl %}
<form>
<a class="dropdown-item" href="#" id=add_song> {{ p.playlist_name }} </a>
</form>
<script type=text/javascript>
$(function() {
$('a#add_song').on('click', function(e) {
e.preventDefault()
$.getJSON('/add_song_to_playlist', );
return false;
});
});
</script>
</div>
{% endfor %}
但似乎不起作用,我什至沒想到它會起作用。 我閱讀了關於這個函數的 jquery 文檔,但它沒有提到將兩個參數作為 python 代碼傳遞(可能是因為我缺乏 JS 知識)。 任何幫助將不勝感激!
您可以像這樣指定路由參數:
@app.route('/add_song_to_playlist/<pl_id>/<s_id>', methods=['POST'])
def add_song_to_playlist(pl_id, s_id):
sp = songs_playlists(song_id = s_id, playlist_id = pl_id)
db.session.add(sp)
db.session.commit()
return "nothing"
您的 http 調用應如下所示: https://server_ip/add_song_to_playlist/playlist_id/song_id
看看這里: https : //pythonbasics.org/flask-tutorial-routes/
或者您可以通過 post call 的主體傳遞它們,然后按如下方式訪問它們:
@app.route('/add_song_to_playlist', methods=['POST'])
def add_song_to_playlist():
pl_id = request.form.get('pl_id')
s_id = request.form.get('s_id')
sp = songs_playlists(song_id = s_id, playlist_id = pl_id)
db.session.add(sp)
db.session.commit()
return "nothing"
或者,也通過獲取請求: https://server_ip/add_song_to_playlist?playlist_id=pl_id&song_id=s_id
@app.route('/add_song_to_playlist', methods=['GET'])
def add_song_to_playlist():
pl_id = request.args.get('pl_id')
s_id = request.args.get('s_id')
sp = songs_playlists(song_id = s_id, playlist_id = pl_id)
db.session.add(sp)
db.session.commit()
return "nothing"
在我看來,管理有問題的電話的最佳方法是第一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.