繁体   English   中英

使用AJAX进行验证以确保相同的电子邮件不会放在数据库中

[英]Using AJAX for validation to make sure the same email is not placed in the Data Base

我正在尝试使用jQuery for validation查询数据库jQuery for validation以确保在我的应用程序中不会使用相同的电子邮件两次。

1)我不确定jQuery is correct 我知道它是从我用选择器定位的输入中获取信息但是我在查看发送到服务器的对象内部有什么问题。

2)发送到server is causing a 400 error. 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.的信息server is causing a 400 error. 400 Bad Request: The browser (or proxy) sent a request that this server could not understand. 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()放在实际输入而不是整个表单上来传递正确的数据吗? 我最初在表单的id上使用.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 - 当key up激活异步代码时div为partial

@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)
        });
    });
});

这是js / jQuery AJAX调用结果是:

我收到了之前放置的400错误,唯一打印的是Immutable Dictionary。

400错误请求:浏览器(或代理)发送了此服务器无法理解的请求。

打印的不可变字典是因为您打印的是表单对象,而不是值。 要获取实际值,请使用: request.form.get('email')

另外,只是注意到您正在设置value_ = data ,而数据尚未设置,我认为您想要这样做: value_ = request.form.get('email')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM