I was following a Tutorial about sending AJAX requests with jQuery in Flask which actually was successful. But after playing around with AJAX it seems like I have not understood everything about this system.
My js File:
$.ajax({
data : {
name : $('#nameInput').val(),
email : $('#emailInput').val(),
test : $('#test').val()
},
type : 'POST',
url : '/process',
contentType: 'application/json'
})
.done(function(data) {
if (data.error) {
$('#errorAlert').text(data.error).show();
$('#successAlert').hide();
}
else {
$('#successAlert').text(data.name).show();
$('#errorAlert').hide();
}
});
Now my data has three text input fields, two of them are in a form, one of them is just an tag:
<form class="form-inline">
<div class="form-group">
<label class="sr-only" for="emailInput">Email address</label>
<input type="email" class="form-control" id="emailInput" placeholder="Email">
</div>
<div class="form-group">
<label class="sr-only" for="nameInput">Name</label>
<input type="text" class="form-control" id="nameInput" placeholder="First Name">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
<br>
<input type="text" id="test" placeholder="Test">
<br>
Now if I am understanding correctly, then it does not matter for jquery where the input fields are in the HTML-document it will find my id-tag and bind it to my data-object. But for some reason when trying to read my post request in my flask app, it cant read my object.
Here is my flask @route function:
@app.route('/process', methods=['POST'])
def process():
test = request.form['test']
email = request.form['email']
name = request.form['name']
if name and email:
newName = test[::-1]
return jsonify({'name' : newName})
return jsonify({'error' : 'Missing data!'})
The weird part is that when removing all of my "test"-tags and leaving only email and name, my code works. Only if I put the test input in there and the jquery-line test:$('#test').val()
and the line in my python code test = request.form['test']
it works.
What detail am I missing? I have tried a lot of things there