Console.log показывает «500 (внутренняя ошибка сервера)» при отправке запроса POST через AJAX - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь создать простое окно поиска, используя 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.

Не могли бы вы посоветовать мне решение этих ошибок?

1 Ответ

0 голосов
/ 17 июня 2019

Следующее недопустимо для получения значения из вашей формы:

starts_with: request.form['starts_with' + "%"]

Должно быть:

starts_with: request.form['starts_with']

Кроме того, я рекомендую прочитать this вопрос (и ответы) с указанием рисков безопасности (внедрение SQL) при построении запроса таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...