Call python function from JS

I am trying to call a function in Python from my JavaScript code. I used the code explained here but it does not work for me.

Here is my JS code:

<!DOCTYPE html>
<script type="text/javascript" src="d3/d3.js"></script>
<script type="text/javascript" src=""></script>  
text ="xx";

type: "POST",
url: "~/",
data: { param: text}
}).done(function(o) {

Python Code:

import csv
from numpy import genfromtxt
from numpy import matrix

def main():
    return x 
if __name__ == "__main__":
    return x;

Do you know what is wrong with it?



Apart from the mentioned points and assuming you already have a proper setup to serve your python script and return the response. You should submit an asynchronous request, especially if the python code does some heavy computation.

function postData(input) {
        type: "POST",
        url: "/",
        data: { param: input },
        success: callbackFunc

function callbackFunc(response) {
    // do something with the response

postData('data to process');

If you only do some light computation and you have no problem working with a code deprecated as of jQuery 1.8, go with the synchronous approach. This is not recommended as it blocks the main thread.

function runPyScript(input){
    var jqXHR = $.ajax({
        type: "POST",
        url: "/",
        async: false,
        data: { param: input }

    return jqXHR.responseText;

// do something with the response
response= runPyScript('data to process');

Read more about it here: How do I return the response from an asynchronous call? and


After searching for few hours, I ended up having the following, and it worked well. Hope this helps someone else in future.

HTML and JS code: loging.html:

    <title>Flask Intro - login page</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="static/bootstrap.min.css" rel="stylesheet" media="screen">
    <script type="text/javascript" src=" 2.1.4.min.js"></script>  
    <input id="submitbutton" type="submit" value="Test Send Data">
    <script type="text/javascript">

    function runPyScript(input){
        var jqXHR = $.ajax({
            type: "POST",
            url: "/login",
            async: false,
            data: { mydata: input }

        return jqXHR.responseText;

        datatosend = 'this is my matrix';
        result = runPyScript(datatosend);
        console.log('Got back ' + result);


Python code:

from flask import Flask, render_template, redirect, url_for,request
from flask import make_response
app = Flask(__name__)

def home():
    return "hi"

@app.route('/login', methods=['GET', 'POST'])
def login():
   message = None
   if request.method == 'POST':
        datafromjs = request.form['mydata']
        result = "return this"
        resp = make_response('{"response": '+result+'}')
        resp.headers['Content-Type'] = "application/json"
        return resp
        return render_template('login.html', message='')

if __name__ == "__main__": = True)


Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.