Я работаю с шаблоном Flask для создания таблицы, в которой строки заполняются базой данных. Я пытаюсь отредактировать одну из этих строк, когда нажата соответствующая кнопка редактирования. В настоящее время код просматривает результаты базы данных и заполняет таблицу, прикрепляя кнопку к каждой строке. При нажатии кнопки вызывается скрипт, который использует ajax для вызова моей python функции, которая должна обрабатывать ввод и перенаправлять страницу для редактирования. html. Все вызывается правильно, но страница просто обновляется и остается на таблицах. html и никогда не уходит. Ниже приведен код
@app.route('/tables.html', methods=['GET','POST'])
def questions():
table = list(getAllQuestions())
if(request.method == 'GET'):
return render_template('layouts/default.html',
content=render_template( 'pages/tables.html', value=table,), value=table)
def getAllQuestions():
conn = mysql.connect()
cursor = conn.cursor()
cursor.execute("SELECT * FROM tbl_questions")
data = cursor.fetchall()
data = data[:10]
return data
@app.route("/edit.html", methods=['GET', 'POST'])
def edit():
print("in edit")
form = RegisterForm(request.form)
return render_template('pages/edit.html', form=form)
@app.route('/background_process_test', methods=["GET", "POST"])
def background_process_test():
return redirect(url_for('edit'))
html и js
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type=text/javascript>
function clickfunction(value) {
console.log(value)
var resp = {
'value': value
}
console.log(resp)
$.ajax({
url: "/background_process_test",
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(value),
dataType: 'json',
success: function(response) { alert(response); }
})
}
</script>
<div class="panel-header panel-header-sm">
</div>
<div class="content">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title"> Questions </h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table">
<thead class=" text-primary">
<th>
Question
</th>
<th>
Round
</th>
</thead>
<tbody>
{% for row in value %}
<tr id="table">
<td>{{row[0]}}</td>
<td>{{row[1]}}</td>
<td>{{row[2]}}</td>
<td><form><a><button class='editButtons' value={{row[0]}} onclick="clickfunction({{ row[0] }})">Edit</button></a></form> </td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
Соответствующий вывод
in edit
127.0.0.1 - - [22/Mar/2020 12:58:03] "GET /edit.html HTTP/1.1" 200 -
127.0.0.1 - - [22/Mar/2020 12:58:04] "GET /tables.html HTTP/1.1" 200 -
Когда все это будет запущено, «in edit» действительно регистрируется в консоли, но страница никогда не отображается. Вместо этого страница таблиц просто обновляется, и кажется, что ничего не происходит, как вы можете определить по запросу GET после того, как он был отредактирован. Я уверен, что совершаю какую-то глупую ошибку, но это мой первый проект flask (и, честно говоря, первый веб-проект, никогда не использовавший js). Если что-то необходимо выяснить или требуется больше кода для понимания обстоятельств, связанных с проблемой, дайте мне знать, и я уточню