I need to use JSON object in my registration and login form to check the data from the database using ajax.
There is my JSON object:
@app.route('/test', methods=['POST'])
def test():
users = User.query.all()
users_schema = UserSchema(many=True)
output = users_schema.dump(users).data
jsonobj = jsonify({'users': output})
return jsonobj
My registration form:
<!-- extend base layout -->
{% extends "base.html" %}
{% block content %}
<script src="{{ url_for('static', filename='js/form.js') }}"></script>
<div class="well">
<h1>Sign Up</h1>
<form action="" method="post" name="regform" onsubmit="return Validate()">
<div id="username_div">
{{ form.hidden_tag() }}
{{ form.username.label }}
{{ form.username }}
<div id="name_error"></div>
</div>
<div id="email_div">
{{ form.hidden_tag() }}
{{ form.email.label }}
{{ form.email }}
<div id="email_error"></div>
</div>
<div id="password_div">
{{ form.hidden_tag() }}
{{ form.password.label }}
{{ form.password }}
<div id="password_error"></div>
</div>
<div id="pass_confirm_div">
{{ form.hidden_tag() }}
{{ form.password_confirm.label }}
{{ form.password_confirm }}
<div id="password_error"></div>
</div>
<div>
<input type="submit" name="register" value="Register" class="btn">
</div>
</form>
<div id="successAlert" class="alert alert-success" role="alert" style="display:none;"></div>
<div id="errorAlert" class="alert alert-danger" role="alert" style="display:none;"></div>
</div>
<script src="{{ url_for('static', filename = 'js/regform_validator.js') }}"></script>
{% endblock %}
How to use my JSON object with ajax? Or may be I can rewrite my regform_validator.js script?
// SELECTING ALL TEXT ELEMENTS
var username = document.forms['regform']['username'];
var email = document.forms['regform']['email'];
var password = document.forms['regform']['password'];
var password_confirm = document.forms['regform']['password_confirm'];
// SELECTING ALL ERROR DISPLAY ELEMENTS
var name_error = document.getElementById('name_error');
var email_error = document.getElementById('email_error');
var password_error = document.getElementById('password_error');
// SETTING ALL EVENT LISTENERS
username.addEventListener('blur', nameVerify, true);
email.addEventListener('blur', emailVerify, true);
password.addEventListener('blur', passwordVerify, true);
// validation function
function Validate() {
// validate username
if (username.value == "") {
username.style.border = "1px solid red";
document.getElementById('username_div').style.color = "red";
name_error.textContent = "Username is required";
username.focus();
return false;
}
// validate username
if (username.value.length < 3) {
username.style.border = "1px solid red";
document.getElementById('username_div').style.color = "red";
name_error.textContent = "Username must be at least 3 characters";
username.focus();
return false;
}
// validate email
if (email.value == "") {
email.style.border = "1px solid red";
document.getElementById('email_div').style.color = "red";
email_error.textContent = "Email is required";
email.focus();
return false;
}
// validate password
if (password.value == "") {
password.style.border = "1px solid red";
document.getElementById('password_div').style.color = "red";
password_confirm.style.border = "1px solid red";
password_error.textContent = "Password is required";
password.focus();
return false;
}
// validate password
if (password.value.length < 3) {
password.style.border = "1px solid red";
document.getElementById('password_div').style.color = "red";
password_confirm.style.border = "1px solid red";
password_error.textContent = "Password must be at least 3 characters";
password.focus();
return false;
}
// check if the two passwords match
if (password.value != password_confirm.value) {
password.style.border = "1px solid red";
document.getElementById('pass_confirm_div').style.color = "red";
password_confirm.style.border = "1px solid red";
password_error.innerHTML = "The two passwords do not match";
return false;
}
}
// event handler functions
function nameVerify() {
if (username.value != "") {
username.style.border = "1px solid #5e6e66";
document.getElementById('username_div').style.color = "#5e6e66";
name_error.innerHTML = "";
return true;
}
}
function emailVerify() {
if (email.value != "") {
email.style.border = "1px solid #5e6e66";
document.getElementById('email_div').style.color = "#5e6e66";
email_error.innerHTML = "";
return true;
}
}
function passwordVerify() {
if (password.value != "") {
password.style.border = "1px solid #5e6e66";
document.getElementById('pass_confirm_div').style.color = "#5e6e66";
document.getElementById('password_div').style.color = "#5e6e66";
password_error.innerHTML = "";
return true;
}
if (password.value === password_confirm.value) {
password.style.border = "1px solid #5e6e66";
document.getElementById('pass_confirm_div').style.color = "#5e6e66";
password_error.innerHTML = "";
return true;
}
}
My JSON object looks like:
{
"users": [
{
"about_me": null,
"email": "zurgs@bk.ru",
"followed": [],
"followers": [],
"id": 1,
"last_seen": "2018-01-06T11:34:20.021696+00:00",
"password": "pbkdf2:sha256:50000$bRcLhY9k$f26dad7b850c8b99b21f4b65f8719294417f37bf648bb12bcf6be8977b6341f1",
"posts": [],
"role": "user",
"username": "ZuRGs"
},
{
"about_me": null,
"email": "polina@bk.ru",
"followed": [],
"followers": [],
"id": 2,
"last_seen": "2018-01-05T18:52:01.895612+00:00",
"password": "pbkdf2:sha256:50000$em5pCjoZ$ed9bba487cce0c755eccf1575ed9b777d15708c64669193ac078331da8b65edc",
"posts": [],
"role": "user",
"username": "Polina"
}
]
}
This JSON object is my database and I need to check usernames in it using ajax.