Javascript 是否有可能使用Flask提交表单Ajax?
我有一个使用Flask和JavaScript的应用程序。当用户单击按钮并将数据发送到Flask时,我有一个JavaScript函数。此函数在地图上创建一个标记,并将数据从Flask中的函数设置为marker popup。我在弹出窗口中使用Javascript 是否有可能使用Flask提交表单Ajax?,javascript,python,flask,leaflet,Javascript,Python,Flask,Leaflet,我有一个使用Flask和JavaScript的应用程序。当用户单击按钮并将数据发送到Flask时,我有一个JavaScript函数。此函数在地图上创建一个标记,并将数据从Flask中的函数设置为marker popup。我在弹出窗口中使用表单,因为我想从弹出窗口中获取名称。我想从弹出窗口提交此表单并获取名称,但当我执行此操作时,打印(“名称:”,nazwa_事件)将不返回任何内容。我用html创建了一个带有隐藏标记的输入,并将输入值设置为表单$('input[id=nameOF]').val(n
表单
,因为我想从弹出窗口中获取名称。我想从弹出窗口提交此表单并获取名称,但当我执行此操作时,打印(“名称:”,nazwa_事件)
将不返回任何内容。我用html创建了一个带有隐藏标记的输入,并将输入值设置为表单$('input[id=nameOF]').val(nazwa.value)中的名称代码>。可以这样做,否则我无法从Ajax
提交表单
HTML代码:
<input type="text" id="name_of_event" class="form-control mb-2" name="name_event" placeholder="Nazwa wydarzenia">
<input name="nameOfEvent" type="hidden" value="" id="nameOF">
<br>
<button id="search-button_event" type='submit' name="event_form" class="btn btn-primary">Szukaj</button>
我无法测试它,但对我来说,您将
隐藏在错误的位置-它必须在表单中在弹出窗口中。您可以直接在HTML中设置值,而无需使用jQuery
marker_event._popup.setContent(
'<form method="POST" action="/mapaa"' +
'<input name="nameOfEvent" type="hidden" value="' + nazwa.value + '" id="nameOF">' +
'<p>Nazwa: ' + nazwa + '</p>' +
'<button type="submit" id="form-submit" name="form-submit" class="btn btn-warning btn-block">Dołącz do wydarzenia</button>' +
'</form>'
)
marker\u事件。\u popup.setContent(
“不,你不能用AJAX提交表单,而是发送表单包含的数据。那么我如何用其他方式来做呢?有什么方法可以做到吗?也许可以先检查一下表单中的内容-例如,print(request.form)
或print(request.form.keys())
返回request.form
meImmutableMultiDict([('form-submit','')
和request.form.keys()
返回我
哦,是的,你是对的,我更改了,但现在它返回我未定义的不知道为什么。也许它应该是nazwa
而不是nazwa.value
@app.route('/mapaa',methods=['GET','POST'])
def mapa():
user_id = current_user.get_id()
slownik = {}
if request.method == "POST":
if request.is_json:
req = request.get_json()
nazwa = req['name']
data_pocz = req['data_start']
data_kon = req['data_end']
typ = req['type']
dlugosc = req['len_route']
coord = req['coordinates']
event_database = Event(date_start=data_pocz, date_end=data_kon, type=typ, name=nazwa, len_route=dlugosc,admin=user_id, route=coord)
db.session.add(event_database)
db.session.commit()
print('Dodano wydarzenie')
if 'form-submit' in request.form:
nazwa_event = request.form.get('nameOfEvent')
print("Id ev:",nazwa_event)
else:
name_ev = request.form.get('nameevent')
all_data = Event.query.filter_by(name=name_ev).all()
for row in all_data:
date_st_string = str(row.date_start)
date_end_string = str(row.date_end)
slownik = {'id':row.id,'date_st':date_st_string,'date_end':date_end_string,'type':row.type,'name':row.name,'len_route':row.len_route,'route':row.route}
return jsonify(slownik)
return render_template('mapaa.html', title='Mapa')
marker_event._popup.setContent(
'<form method="POST" action="/mapaa"' +
'<input name="nameOfEvent" type="hidden" value="' + nazwa.value + '" id="nameOF">' +
'<p>Nazwa: ' + nazwa + '</p>' +
'<button type="submit" id="form-submit" name="form-submit" class="btn btn-warning btn-block">Dołącz do wydarzenia</button>' +
'</form>'
)