I am trying to send an array to flask through ajax post call. But somehow it is not working.
Javascript
<script type="text/javascript">
function fillChart()
{
var nids = document.getElementById("nodes-select").value;
var cfilter = document.getElementById("filter-select").value;
var chkd = document.getElementById("further-select");
var cids = [];
for (var i=0;i<chkd.length;i++)
{
if(chkd[i].selected)
{
cids.push(chkd[i].value);
}
}
alert(cids);
$.post("/pie",{"node_id":nids,"col_select":cfilter,"col_filter":cids},function(data,status)
{
var tmp = data;
console.log(data.otstr);
});
}
</script>
Server code
@app.route('/pie',methods=['POST'])
def pie():
tmp1 = request.form.get('node_id')
tmp2 = request.form.get('col_select')
tmp3 = request.form.get('col_filter[]')
return jsonify(otstr=[tmp1,tmp2,tmp3])
Here tmp1 and tmp2 are just strings and tmp3 is an array of strings.console.log(data.otstr) is printing correct values of tmp1,tmp2 but when it comes to tmp3 since it is an array, it is printing the first element only.
You need to retrieve col_filter
as a list:
tmp3 = request.form.getlist('col_filter[]')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With