Использование AJAX для проверки, чтобы убедиться, что тот же адрес электронной почты не помещен в базу данных - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь запросить базу данных, используя jQuery for validation, чтобы убедиться, что один и тот же адрес электронной почты не используется дважды в моем приложении.

1) Я не уверен, что jQuery is correct.Я знаю, что он получает информацию из ввода tne, на который я нацелил селектор, но у меня возникла проблема с просмотром того, что находится внутри объекта того, что отправляется на сервер.

2) Информация, отправляемая наserver is causing a 400 error. 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.

-Я хотел бы знать, как я могу получить доступ к значениям, передаваемым в словаре .... request.body.keys() and request.body.values() не работает.Я думал, что словарь, с которым я передаю, .ajax() method будет тем, что есть в request.body

- Я передаю правильные данные, помещая .serialized() на фактический ввод вместо формы какцелое?Сначала я использовал .serialize() method для идентификатора формы.

- это мой запрос MySQL или как я передаю словарь в строку перед отправкой запроса?Я проверил MySQL, и он запросил письмо с кодом, который я написал.

- Моя логика сработает, чтобы вставить частичное внутри div?Я не уверен, что частичное является правильным.

{% if found == True %}
<p class="error-email">Email has been taken.</p>
{% endif %}
{% if found == False %}
<p class="success-email"> This email is available</p>
{% endif %}

- это частичный HTML-код

 <div id="email"></div>
 <input type="email" name="email" placeholder="email" id="email-form">

* это HTML - div для частичного, когда ключup активирует асинхронный код

@app.route('/check', methods=["POST"])
def check_avaliability_of_email():
    found = False
    mysql = connectToMySQL('flask_canidate_survey_app')
    query = 'SELECT email FROM flask_canidate_survey_app.users WHERE users.email = "%(check_value)s"'
    print('AJAX_DATA:', request.form.get('email'))
    value_ = data
    check_value = {'user': value_}
    result = mysql.query_db(query, data)
    if result:
        found = True
    return render_template('/partials/validation_email.html', found=found)

* код на стороне сервера (python)

$(document).ready( function() {
    $('#email-form').keyup(function() {
        var emailData = $('#email-form').serialize()
        $.ajax({
            method: "POST",
            url: "/check",
            data: emailData
        })
        .done(function(res) {
            $('#email').html(res)
        });
    });
});

это вызов JJ / JQuery AJAX. Результат был:

Iя получаю ошибку 400, которую я поместил ранее, и единственное, что печатает, это неизменный словарь.

400 Плохой запрос: браузер (или прокси-сервер) отправил запрос, который этот сервер не может понять.

1 Ответ

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

Печатный словарь неизменяемости - это потому, что вы печатаете объект формы, а не значения. Для получения фактических значений используйте: request.form.get('email').

Кроме того, просто отметив, что вы устанавливаете value_ = data, где данные не были установлены, я предполагаю, что вы хотите сделать: value_ = request.form.get('email').

...