I am trying to get data from webpage to my flask app and after a few operations on it,the output list im trying to send it back to front end as a dropdown list.
What
You can use ajax with Jquery. You can see this doc for more details.
How to proceed:
In your HTML file template:
Load Jquery preferably before any other javascript files.
Either statically:
<script type=text/javascript src="{{url_for('static', filename='jquery.js') }}"> </script>
Or using Google’s AJAX Libraries API:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="{{url_for('static', filename='jquery.js') }}">\x3C/script>')</script>
Add a dynamic path to the site:
<script type=text/javascript>$SCRIPT_ROOT = {{ request.script_root|tojson|safe }}; </script>
This script tag sets a global variable to the prefix to the root of the application.
Write a function that will take as argument the value entered in the form by the user, perform search operations and return a JSON object with the list you want to display.
@app.route("/_signUp")
def signUp():
myString = request.args.get('myString')
"""couple of find and search operations the output of which is in
this dropdown_list list"""
dropdown_list = ['A', 'B', 'C'] #sample
return jsonify(dropdown_list=dropdown_list)
Write a script that will retrieve the data entered, send them in Ajax to the server and display the information returned by the server.
<script type=text/javascript>
$(function(){
$('#btnSignUp').bind('click', function(){
$.getJSON($SCRIPT_ROOT + '/_signUp', {
myString: $('input[name="Nitro"]').val(),
},function(data){
$('#info').append('<li>' + data.dropdown_list[0] + '</li>' );//A
$('#info').append('<li>' + data.dropdown_list[1] + '</li>' );//B
$('#info').append('<li>' + data.dropdown_list[2] + '</li>' );//C
}
});
});
</script>
<div id='nitroo'>
Nitro_search: <input type="text" placeholder="Apply Nitro" name="Nitro" id="Nitro">
<button id="btnSignUp" class="btn btn-lg btn-primary btn-block" type="button">Search</button>
<pre id="info"></pre>
</div>
See this link for more details.