I take some user input that results in a table which I can display. Now I want to allow the user to select some data and then send these data back to another function where it is further processed. For the toy example I use for demonstration purposes, it might look like this:
Unfortunately, I fail to do so. The critical parts are probably thisjquery part (the entire code can be found below):
$('#send_data').bind('click', function() {
  $.getJSON('/_selected_data', {
    sel_data: table.rows().data().toArray()
  }, function(data) {
    alert('This worked')
  });
  return false;
});
and this part of my Python code:
@app.route('/_selected_data')
def get_selected_data():
    sel_data = request.args.get('sel_data')
When I print sel_data it prints None, when I use requests.json it does not work either; ideally it would be possible to get the results again as a pandas dataframe with the same columns headers. 
How would I do this correctly? Also, if the user does not select any data, then of course the entire table should be returned.
This is the entire code:
from flask import Flask, render_template, request, jsonify
import pandas as pd
import numpy as np
import json
# just for reproducibility
np.random.seed(0)
# Initialize the Flask application
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('index.html')
@app.route('/_get_table')
def get_table():
    a = request.args.get('a', type=int)
    b = request.args.get('b', type=int)
    df = pd.DataFrame(np.random.randint(0, 100, size=(a, b)), columns=['C1', 'C2'])
    return jsonify(number_elements=a * b,
                   my_table=json.loads(df.to_json(orient="split"))["data"],
                   columns=[{"title": str(col)} for col in json.loads(df.to_json(orient="split"))["columns"]])
@app.route('/_selected_data')
def get_selected_data():
    sel_data = request.args.get('sel_data')
    print(sel_data)
    return jsonify(dummy_data=1)
if __name__ == '__main__':
    app.run(debug=True)
and my index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet">
  </head>
  <body>
    <div class="container">
      <div class="header">
        <h3 class="text-muted">Create a pretty table</h3>
      </div>
      <div>
        <p>Number of rows</p>
        <input type="text" size="5" id="a" value="10">
        <p>Number of columns</p>
        <input type="text" size="5" id="b" value="2">
        <p><a href="javascript:void();" id="calculate">get a pretty table</a></p>
        <p><a href="javascript:void();" id="send_data">send selected data</a></p>
         <p>Result</p>
        <p>Number of elements:</p>
          <span id="elements">Hallo</span><br>
          <table id="a_nice_table" class="table table-striped">Here should be a table</table>
      </div>
    </div>
    <script src="https://code.jquery.com/jquery-1.12.4.js" type="text/javascript"></script>
    <script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js" type="text/javascript"></script>
    <script type="text/javascript">
      $(document).ready(function() {
        var table = null;
        $('#calculate').bind('click', function() {
          $.getJSON('/_get_table', {
            a: $('#a').val(),
            b: $('#b').val()
          }, function(data) {
            $("#elements").text(data.number_elements);
            if (table !== null) {
              table.destroy();
              table = null;
              $("#a_nice_table").empty();
            }
            table = $("#a_nice_table").DataTable({
              data: data.my_table,
              columns: data.columns
            });
          });
          return false;
        });
        $('#send_data').bind('click', function() {
          $.getJSON('/_selected_data', {
            sel_data: table.rows().data().toArray()
          }, function(data) {
            alert('This worked')
          });
          return false;
        });
      });
    </script>
  </body>
</html>

 
    