Я пытаюсь создать простое окно поиска, используя Flask, когда я ставлю «m» в поле, оно должно получить ответ от AJAX API, показывающий только имена людей, начинающиеся с «m», без обновления страницы.Я сохранил 5 имен в рабочей среде SQL, начиная с «m», но когда я поставил «m» в поле, проверка Chrome показывает
POST http://localhost:5000/users/find 500 (внутренняя ошибка сервера)jquery.min.js: 2
При проверке Network-> Response (Preview) оба показывают
NameError: имя "username" не определено.
Поле поиска определено в «index.html».
Я попытался изменить имя на «username», оно не сработало, и я не совсем понимаю эти ошибки.
Мой api.py:
@app.route('/')
def index():
return render_template('index.html')
@app.route('/users/find', methods=['POST'])
def find():
mysql = connectToMySQL('usersApi')
query = "SELECT name FROM users WHERE name LIKE %(starts_with)s"
data = {
starts_with: request.form['starts_with' + "%"]
}
users = mysql.query_db(query,data)
print(data)
return render_template('users.html',users=users)
Мой index.html:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id='myForm' method= 'POST' action='/users/find'>
<input type="text" id="starts_with" name="starts_with"/>
</form>
<script>
$(document).ready(function(){
$('#starts_with').keyup(function(){
console.log("came here")
$.ajax({
method: 'POST',
url: '/users/find',
data: $('#myForm').serialize(),
success: function(response) {
console.log('received response:', response);
$('#placeholder').html(response)
}
})
})
})
</script>
Мой user.html: (это страница, на которой я хочу показать всеимена начинаются с «m», когда я ставлю «m» в поле поиска)
<div id="all">
{% for user in users %}
<p>{{ user.name }}</p>
{% endfor %}
имя таблицы mySQL - «пользователи», а имя столбца - «имя».Я еще не установил JSON, надеюсь, сначала он будет работать через console.log.
Не могли бы вы посоветовать мне решение этих ошибок?